Completely overhaul mixpanel-simple

- Each component is separated for easier debugging and testing
- Each component has the beginning of unit tests
- Each component is fully asynchronous