Refactored token authentication to make it more modular

Refactored some of the token authentication code.

Main refactoring points:
* Moved token methods from ```application_controller.rb``` to concerns module
* Created PORO ```Token``` class - a token should be able to handle it's own internal state
* Used ```ActiveModel::Validations``` to perform token validation
* Refactored validation method using errors architecture
* Moved test code according to above refactoring

Key points:
* Controllers should deal with logic and flow. if valid? do X else do Y. No need to perform token encode/decode/validation inside controllers
* Use model classes to deal with internal logic decode / encode / validation. When they deal with their own internal logic, the rest of the app can ignore it and just assume it works.
* Controller testing becomes much easier as it is about what goes where and can just assume a token exists.

This isn't ready for a merge yet. Need to do some final testing, but I'd love it if you could take a look at what I've done and provide feedback / comments. Thanks!. /cc @shivanibhanwal