This PR does two things:

1. I moved `package.json` into the root directory. Why? We are using `npx` from the `Makefile` which is executing usually under the root directory. If we install `node_modules` in `src/js` then these invocations don't see `node_modules` and install an extra copy of the packages. So we want `node_modules` in the root directory. node wants to put `node_modules` in the same directory as `package.json` hence I moved `package.json`. I also updated the build rules so that any recipe that uses `npx` has a dependency on `node_modules/.installed`.
2. We invoke `file_packager.py` from both the Makefile (in two places) and from `build_pkg`. There has been some drift in which options are applied in the two places. I extracted the common options and the task of locating the `file_packager.py` script into `tools/file_packager.sh`. I also shortened the make rules for `distutils.data` and `test.data` and made some minor updates to the dev docs about `file_packager.py`.
MAINT Improvements to node and file_packager invocations. This PR does two things:

1. I moved `package.json` into the root directory. Why? We are using `npx` from the `Makefile` which is executing usually under the root directory. If we install `node_modules` in `src/js` then these invocations don't see `node_modules` and install an extra copy of the packages. So we want `node_modules` in the root directory. node wants to put `node_modules` in the same directory as `package.json` hence I moved `package.json`. I also updated the build rules so that any recipe that uses `npx` has a dependency on `node_modules/.installed`.
2. We invoke `file_packager.py` from both the Makefile (in two places) and from `build_pkg`. There has been some drift in which options are applied in the two places. I extracted the common options and the task of locating the `file_packager.py` script into `tools/file_packager.sh`. I also shortened the make rules for `distutils.data` and `test.data` and made some minor updates to the dev docs about `file_packager.py`.
PNG


IHDRߊsRGB	pHYs+ IDATxytTםIزo,ӢVQZElz#KZ+G=GRhU@*\Z5`CBLf"dfLy>9gb}q]|::t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`@R'(.R[.8L+??_5o<x≝zs꥗^jw{ 4{߯o/Oީϴ~z***_N5d
6L#Fuj8p`?ĉi+))IÆ
S~~ƍٳgk̙JKKFz^{v=Z_uQ^^#Fܹs5|.?vڻwiėu]+|?}G`0ء9{찏VZv7nB!'p'Mܔ.sѮ]::ѿ/vwc#F!qܳ>}:m#]X!^j׮]/SO=U[ltzzKgq.\?0ӑ$jڵ0anV566{J=A֭ĉu7.SJhj˖-2e."}AvءGZfM+<#2e}xO|rM:U%%%NL4669{5ydmݺ5SA!455ꫯֵ^$K/Ooj=ywu룏>TzRwyz'=$n<lպ{=ٻwfϞxO%fۧ9sE466jѢEz7=$nҥKaÆxO#l޼Y_}){9-)S4o<}W
֢ty)999뺮gϞΩB!]q*((mP466jQ!##CǏWNN|}QڹsgTںu~׿5Jw\UPPk޲e?ꫯ---MguV\;
TvRMMM
7ܠ]zxׯ_>QDm2StywڴiQ±|c>F


b_*ۻm-n-&Mr_~e75VrSSS#/33-++x]+8>nZZZל]O޶v)tKwǏ֭[#>fft{ɓ'kӦMZfRRR]reTUTT)|P=PQwyg1~_7|{=M6MII;h%K9vleeͬdeek|S[VVUVhf_~3go߮Z뭷hfHDqGW^ye+[kjj/v5sLUVVvv'jċ/_+Vpرcyfvia=r]7FYF+38#D]1RRRzjp
aǽk	9bRg֢Eyꩧ\nnn4gwz~aͺK
sG999G}u|^$%%Sw^1Uz4`vܹ3aIwygإn]3<!^lժUJOOowƍڣt)D|[j
]gg?Ѽy󢺺{ɓ+~aNϱp	ظqcf'NM7vwm0`?"XFFf͚ڣOOO׆
4v؈~z]q]gGڵKf͊n[M4I&M{n/,,Lb'kc4aʔ)6lX~];n/СC/GDk׮-uTqqOGh"\Gs"?Y\uĉaO5g/s'-C{HQno/uܸqڰaCC-VXS눪*͜9S{8vΜ9z/|>_عp63xv;W{___r;~ꩧw?EAsqYgad#]HHο)"*ku+aANoWEs]W^z^~nC0~3kǞp	zXC?z,Xwy[ҳ>qȑ#i&eeeu+Rv[q\nye˖sq999ڴi-tvGuZYYf̘V^qiV[%륗^
umYF,8P3fO>,Yq\rrzꩈK@_Gцw{~ᇚ3g:YG̙3;~ܡCn5em߾=ؖ%by晨n{:
k>wq1XB]tQz/W_ًӵqF?ݻÎ}xb]6>L\pATK|.
g444O?4*SHxr^}հ;Czؿ/o~}iƌQ/bŊ:ދaN3///ӑ%bW\y%bsIW^СCZhQ7a3gN%b׭[w;wvkYpljjj5\]v7wn{Ύ,h"mڴI`P_|1K@^棏>ҙgG}4츱cǆ},`IWmFiQGn몺ZwK/u֩!-_\>+R%%%;#>K_~9rdqLiiiB#Qw)D3O{o]%%%z衇8,
$?^=
t܍ӓO>)qzy|mOrr~itnB
iY<:D7,:cƌM݈LmذAsN̞eSN9C_ǒ&Lжmty[;vlTYzAӵb
رCw6heIW9<y.ڵK7|)iܸqZpa1oc4{m-J_~yTK+??_voeD?R`fqK&"/߳G{QFFF(^VVta7ITޅkp/߯_`Rnnnؕ&z@ۻv _sW>Ce:Lr'r;vE'=QOtE<jԨͤwxUTTv_}AYSN
/W(l"O.??F;w;f1MkhhUW]v߯ì.(7|S{of^0ԥ^v?agճZ^s]]]cZlY#K~aAYӦMx!-ܢe˖=oӾM6MNqϗѬz֗_~3gj۶ma'?1󚻢N]w]#8'N'Y!tt~t0p@-]4옦&y:ӵyVQQx@'tۿr-1YϩҚ5kt'_Wرk:u}ɍg1!.\Wm]w|IU2335aegg}@@*((PSSST_s5h]zg}V~iJJJTPPѐ%KhĈ=<}5kV\;
\;wTMMMT_sgj]zxZn="0mРAZz,XqF*++#	&hٲe]~BvÌzޤIt뭷u555ڸqc\T=#]~1S;üy;4:%##C/BZ(;;[ׯWjjj+84iR8#-[.,T=q}Xs=u>O4o޼xO	xGtwUƌz+.o/ƍӶmtg{*BJJy-Y$SAHـntRmذ!az}>.}e]~;a$s=W۶mܹs=$.#^1qraPTuTN>}>#]V+WԞ={}5sL-_G3f讻I'
zn6Bc"}@}kV;(ozpWP+o푠?dŋxbm߾]?x
HyHJJСC1ch֬Y={w:5=Zf҅^xO-!9\
>\Ç׹瞫smrܞ	>0Ѫu.M:;]::+f8+::+'kMnt#>;nE@5tZ],n}'(n
JsX/ָ
]na/2.9P:}ur:t @0`A:t @0`A:t 8&un'>6.?(W${H\鎾5/\y /Cm|R`~7\t̕}_SZ7Pjk\9O0dOٹע2bW
cmt+wO4Gr7i
jl)N3$KrT(m[y:|/IӠܨo;)I::$GDuwOPШ@{:8Rj1jW>5#o5fBQ =!
[+'ϧ4z8lGc׸Im]UvOM_:P>9tAW%ESe::wfO9CZȧ9mΉgf;BlJ\UW=ܞytqhpp=}AGjk\m+NIs3wώGyCed9i/eZ<t_Z>	~gqCqL㨮N*-oJOy?2eks<-ç̬8{OJTyu)5.<`aQ܃x:lrU]R/9v=vmg陎2[㛕SfNZiqH<SVO?IQ۷t`rxc8G#PTR&wZrZ3ؑHu\xSFOI޸GY͇CA$tsW۞?Ⳡ;4*xtX:ª=j)isoYʊCEHlRyPu3cotUVҡZWE_US\Q_Guwa\˅)r|l$g4oQRV4/!U^hKCm(
o熏+;ϑorG

KCoޣNMsh G}J(*+BjOPʚSFG9.-eUZKA^TSmB:ؼ̀G 7t冤ծz](oXUe!TQw=PȻ½5ƹC}mnG+-`u Vy8)Go"舨eu[8&-ç#|ʐKCrJSfve|^<j
z}{m!9֯tcWDtUiI^rjk~C
/Ե5{~)+ǧt8%*˽8;!CAW}:k|VI$GY>
ׅA56f-Ђ#,qTWj
5Z#R4W**wmMH^iZq{Ǒ'|F=)z8ǒ~i>f9:"
4(su*,r|J]r޻;SHJ8y*[#7ۥ|	㒔#JK'';Jn^Ƶ;j?f4p`kzsZ3USȷ~iտԯ#9x{xiX:RS-2nv]WU!&#U{ZΟ;FW[^nԮO'LRZw~XvUSyt:tZTU
x㒎:Pzu];z~<Oo5yv%޹tsc[Tq$n[C\RS5+UUTQ޺+\@
Yr{rzwOPU6edz:z<:jux}]۽wSs]Wͫ:cm;JW%Ek96ү~X5$JB[M>;t^]ώ*$WS𳠂/h^&s>
IooҀr$>eszmcMۛWzoPSv}TI{8!56Qg~}!%%ycG#*(- ]6+]Q[F-cZWu*f8ңDm{~苸(:tp\n5/rU_YΠέ{:pHIDAT:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A?t	lniTXtXML:com.adobe.xmp<?xpacket begin='﻿' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>

 <rdf:Description rdf:about=''
  xmlns:Attrib='http://ns.attribution.com/ads/1.0/'>
  <Attrib:Ads>
   <rdf:Seq>
    <rdf:li rdf:parseType='Resource'>
     <Attrib:Created>2020-10-26</Attrib:Created>
     <Attrib:ExtId>4d44af96-13ec-418f-bc6f-b0b81670e6ae</Attrib:ExtId>
     <Attrib:FbId>525265914179580</Attrib:FbId>
     <Attrib:TouchType>2</Attrib:TouchType>
    </rdf:li>
   </rdf:Seq>
  </Attrib:Ads>
 </rdf:Description>

 <rdf:Description rdf:about=''
  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
  <pdf:Author>Александра Жейнова</pdf:Author>
 </rdf:Description>

 <rdf:Description rdf:about=''
  xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
  <xmp:CreatorTool>Canva</xmp:CreatorTool>
 </rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end='r'?>cIENDB`
PNG


IHDRߊsRGB	pHYs+ IDATxytTםIزo,ӢVQZElz#KZ+G=GRhU@*\Z5`CBLf"dfLy>9gb}q]|::t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`@R'(.R[.8L+??_5o<x≝zs꥗^jw{ 4{߯o/Oީϴ~z***_N5d
6L#Fuj8p`?ĉi+))IÆ
S~~ƍٳgk̙JKKFz^{v=Z_uQ^^#Fܹs5|.?vڻwiėu]+|?}G`0ء9{찏VZv7nB!'p'Mܔ.sѮ]::ѿ/vwc#F!qܳ>}:m#]X!^j׮]/SO=U[ltzzKgq.\?0ӑ$jڵ0anV566{J=A֭ĉu7.SJhj˖-2e."}AvءGZfM+<#2e}xO|rM:U%%%NL4669{5ydmݺ5SA!455ꫯֵ^$K/Ooj=ywu룏>TzRwyz'=$n<lպ{=ٻwfϞxO%fۧ9sE466jѢEz7=$nҥKaÆxO#l޼Y_}){9-)S4o<}W
֢ty)999뺮gϞΩB!]q*((mP466jQ!##CǏWNN|}QڹsgTںu~׿5Jw\UPPk޲e?ꫯ---MguV\;
TvRMMM
7ܠ]zxׯ_>QDm2StywڴiQ±|c>F


b_*ۻm-n-&Mr_~e75VrSSS#/33-++x]+8>nZZZל]O޶v)tKwǏ֭[#>fft{ɓ'kӦMZfRRR]reTUTT)|P=PQwyg1~_7|{=M6MII;h%K9vleeͬdeek|S[VVUVhf_~3go߮Z뭷hfHDqGW^ye+[kjj/v5sLUVVvv'jċ/_+Vpرcyfvia=r]7FYF+38#D]1RRRzjp
aǽk	9bRg֢Eyꩧ\nnn4gwz~aͺK
sG999G}u|^$%%Sw^1Uz4`vܹ3aIwygإn]3<!^lժUJOOowƍڣt)D|[j
]gg?Ѽy󢺺{ɓ+~aNϱp	ظqcf'NM7vwm0`?"XFFf͚ڣOOO׆
4v؈~z]q]gGڵKf͊n[M4I&M{n/,,Lb'kc4aʔ)6lX~];n/СC/GDk׮-uTqqOGh"\Gs"?Y\uĉaO5g/s'-C{HQno/uܸqڰaCC-VXS눪*͜9S{8vΜ9z/|>_عp63xv;W{___r;~ꩧw?EAsqYgad#]HHο)"*ku+aANoWEs]W^z^~nC0~3kǞp	zXC?z,Xwy[ҳ>qȑ#i&eeeu+Rv[q\nye˖sq999ڴi-tvGuZYYf̘V^qiV[%륗^
umYF,8P3fO>,Yq\rrzꩈK@_Gцw{~ᇚ3g:YG̙3;~ܡCn5em߾=ؖ%by晨n{:
k>wq1XB]tQz/W_ًӵqF?ݻÎ}xb]6>L\pATK|.
g444O?4*SHxr^}հ;Czؿ/o~}iƌQ/bŊ:ދaN3///ӑ%bW\y%bsIW^СCZhQ7a3gN%b׭[w;wvkYpljjj5\]v7wn{Ύ,h"mڴI`P_|1K@^棏>ҙgG}4츱cǆ},`IWmFiQGn몺ZwK/u֩!-_\>+R%%%;#>K_~9rdqLiiiB#Qw)D3O{o]%%%z衇8,
$?^=
t܍ӓO>)qzy|mOrr~itnB
iY<:D7,:cƌM݈LmذAsN̞eSN9C_ǒ&Lжmty[;vlTYzAӵb
رCw6heIW9<y.ڵK7|)iܸqZpa1oc4{m-J_~yTK+??_voeD?R`fqK&"/߳G{QFFF(^VVta7ITޅkp/߯_`Rnnnؕ&z@ۻv _sW>Ce:Lr'r;vE'=QOtE<jԨͤwxUTTv_}AYSN
/W(l"O.??F;w;f1MkhhUW]v߯ì.(7|S{of^0ԥ^v?agճZ^s]]]cZlY#K~aAYӦMx!-ܢe˖=oӾM6MNqϗѬz֗_~3gj۶ma'?1󚻢N]w]#8'N'Y!tt~t0p@-]4옦&y:ӵyVQQx@'tۿr-1YϩҚ5kt'_Wرk:u}ɍg1!.\Wm]w|IU2335aegg}@@*((PSSST_s5h]zg}V~iJJJTPPѐ%KhĈ=<}5kV\;
\;wTMMMT_sgj]zxZn="0mРAZz,XqF*++#	&hٲe]~BvÌzޤIt뭷u555ڸqc\T=#]~1S;üy;4:%##C/BZ(;;[ׯWjjj+84iR8#-[.,T=q}Xs=u>O4o޼xO	xGtwUƌz+.o/ƍӶmtg{*BJJy-Y$SAHـntRmذ!az}>.}e]~;a$s=W۶mܹs=$.#^1qraPTuTN>}>#]V+WԞ={}5sL-_G3f讻I'
zn6Bc"}@}kV;(ozpWP+o푠?dŋxbm߾]?x
HyHJJСC1ch֬Y={w:5=Zf҅^xO-!9\
>\Ç׹瞫smrܞ	>0Ѫu.M:;]::+f8+::+'kMnt#>;nE@5tZ],n}'(n
JsX/ָ
]na/2.9P:}ur:t @0`A:t @0`A:t 8&un'>6.?(W${H\鎾5/\y /Cm|R`~7\t̕}_SZ7Pjk\9O0dOٹע2bW
cmt+wO4Gr7i
jl)N3$KrT(m[y:|/IӠܨo;)I::$GDuwOPШ@{:8Rj1jW>5#o5fBQ =!
[+'ϧ4z8lGc׸Im]UvOM_:P>9tAW%ESe::wfO9CZȧ9mΉgf;BlJ\UW=ܞytqhpp=}AGjk\m+NIs3wώGyCed9i/eZ<t_Z>	~gqCqL㨮N*-oJOy?2eks<-ç̬8{OJTyu)5.<`aQ܃x:lrU]R/9v=vmg陎2[㛕SfNZiqH<SVO?IQ۷t`rxc8G#PTR&wZrZ3ؑHu\xSFOI޸GY͇CA$tsW۞?Ⳡ;4*xtX:ª=j)isoYʊCEHlRyPu3cotUVҡZWE_US\Q_Guwa\˅)r|l$g4oQRV4/!U^hKCm(
o熏+;ϑorG

KCoޣNMsh G}J(*+BjOPʚSFG9.-eUZKA^TSmB:ؼ̀G 7t冤ծz](oXUe!TQw=PȻ½5ƹC}mnG+-`u Vy8)Go"舨eu[8&-ç#|ʐKCrJSfve|^<j
z}{m!9֯tcWDtUiI^rjk~C
/Ե5{~)+ǧt8%*˽8;!CAW}:k|VI$GY>
ׅA56f-Ђ#,qTWj
5Z#R4W**wmMH^iZq{Ǒ'|F=)z8ǒ~i>f9:"
4(su*,r|J]r޻;SHJ8y*[#7ۥ|	㒔#JK'';Jn^Ƶ;j?f4p`kzsZ3USȷ~iտԯ#9x{xiX:RS-2nv]WU!&#U{ZΟ;FW[^nԮO'LRZw~XvUSyt:tZTU
x㒎:Pzu];z~<Oo5yv%޹tsc[Tq$n[C\RS5+UUTQ޺+\@
Yr{rzwOPU6edz:z<:jux}]۽wSs]Wͫ:cm;JW%Ek96ү~X5$JB[M>;t^]ώ*$WS𳠂/h^&s>
IooҀr$>eszmcMۛWzoPSv}TI{8!56Qg~}!%%ycG#*(- ]6+]Q[F-cZWu*f8ңDm{~苸(:tp\n5/rU_YΠέ{:pHIDAT:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A:t @0`A?t	lniTXtXML:com.adobe.xmp<?xpacket begin='﻿' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>

 <rdf:Description rdf:about=''
  xmlns:Attrib='http://ns.attribution.com/ads/1.0/'>
  <Attrib:Ads>
   <rdf:Seq>
    <rdf:li rdf:parseType='Resource'>
     <Attrib:Created>2020-10-26</Attrib:Created>
     <Attrib:ExtId>4d44af96-13ec-418f-bc6f-b0b81670e6ae</Attrib:ExtId>
     <Attrib:FbId>525265914179580</Attrib:FbId>
     <Attrib:TouchType>2</Attrib:TouchType>
    </rdf:li>
   </rdf:Seq>
  </Attrib:Ads>
 </rdf:Description>

 <rdf:Description rdf:about=''
  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
  <pdf:Author>Александра Жейнова</pdf:Author>
 </rdf:Description>

 <rdf:Description rdf:about=''
  xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
  <xmp:CreatorTool>Canva</xmp:CreatorTool>
 </rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end='r'?>cIENDB`