Refactor fetching of drops from river

* At the service level, check if the river is private, check if the
requesting account has access

* Use a key/value store - java.util.Map - to store the parameter values

* Merged the RiverDao#getDrops and RiverDao#getDropsSince and
did away with the latter. The parameter list for both of these methods was
largely the same with the main variation being in how the drops are
ordered.

* Replaced the account_read_drops table with river_droplets_read and
bucket_droplets_read which will now store the read drops for a
river and bucket respectively.
Implement markDropAsRead

* Drops in a river or bucket can now be marked as read for
a specific account. For a drop to be marked as read, the querying
account must be an owner of the bucket or river otherwise a 403
will be returned.