Refactored the tests to be faster
Fixed issues raised by new failing tests
Seperated encryption methods into encryption class
Refactored Mongo database based classes to use reactive mongo
Refactored to put duplicated code in seperated classes for re-usability