Core refactor

Took @vam idea forward to refactor into an internal `core`, instead of making `filebrowser` the base module.

* Refactored reusable parts of the application to filebrowser.core
* Main filebrowser module stays the same, so its backwards compatible
* All tests pass