Change Database to use Secret for encryption

- NewDatabase() now only initializes the database instead of both
  initializing and loading
- added LoadDatabase() for loading from a file
- changed the Database Save() method to take a filename
- now using JSON for serialization instead of custom serialization