Continue great refactor: working on storage backend

Storing to database is greatly simplified: we only store in database
elements for which we need SQL-style query (typically probes and
locationPoints, where we want to be able to get all pending probes, or
finished probes, or collecting locationPoints). But, we only store in
SQL fields what we need to search. The rest goes in a string containing
the JSON representation of the object.

Second, we will also do something similar for everything stored in
sharedPreferences: instead of storing individual values, we'll directly
store the objects as JSON and reload them on app startup. That way we
don't need to write all the getters and setters double (one for the
original class and one for the storage wrapper).