Abstraction and Updating

This includes:
* Tools version updates
* Move to Material design with AppCompat
* Abstractions for easier customization