In-browser filesystem using patform-js/filer

Tasks:
- [x] Directory listing
- [x] Open file
- [x] Save file
- [ ] Implement file open dialog
- [ ] Implement "save as" dialog
- [ ] Move encoding shim to filer (see 0f0ac7d14066a105d81bbb2a2dcdc604b5e198bb)
- [ ] Understand how to configure which filesystem to use
- [ ] Switch to platform-js/filer tag once path changes are upstream and tagged.
- [ ] Figure out extensions