Topic/plat 6369

PLAT-6369 - changes to allow different types of snapshots to be stored in the snapshot master. This includes:

* database creation/migration scripts for snapshot table
* creating a simple, common interface for all snapshots that has been retrofitted to the old snapshot and can be used for all new snapshots 
  * API should be backwards compatible
  * Some methods have been deprecated with suggestions to use new type-specific methods
* new type-specific search methods added to the SnapshotSource to allow searches for a particular snapshot type/name combination. Automatically handles searching for an interface type rather than the
implementation type
* creation of new snapshot links