Refactor code structure

> Implement a coherent dependency injection system that plays well with browsers.
> Remove managers in favors of simple platform specific facades.
> Use flow for async callback management

Make