Account followers

* Implemented (un)following of accounts.

* Added a new entity - AccountFollower - to break the many-to-many
relationship that exists between Account entities. As a result, added a "id"
column to the "account_followers" table

* Removed GetAccountDTO#collaborator and GetAccountDTO#isFollower
properties.
Fix failing tests
Limit returned account assets

* The account service checks the privacy settings of the assets belonging
to the queried account and returns only those entities that are accessible
to the querying user. The returned items are those that are publicly viewable
or those that are private and the querying user is a collaborator (on them)
Fix logic bug in AccountDao#populateAssets

* Set the account's bucket and river lists to an empty ArrayList
if the querying account doesn't have access to any of the target
account's assets (buckets and rivers)

* Added messages for the exceptions thrown by BucketService
Refactoring

* Added AccountService#getRiver - a helper method to find a river using
its unique id and to throw a NotFoundException when  the river is not found

* Added @ResponseBody to the RiversController#(add/delete)Follower methods
so that the clients don't get a 400 response

* Added an optional request parameter -"follower" to RiversController#getFollower
which when specified, returns a single follower
Endpoints for adding metadata to bucket drops

* Added endpoints for adding metadata (drops, links, tags, media)
to the drops within a bucket. This was previously being done via
the DropsController; the endpoints (in DropsController) that were being
used for this are no longer available

* Introduced new entities to manage the persistence for the
buckets_droplets table and the associated metadata tables
Merge branch 'master' into buckets-api-dev

Conflicts:
	src/main/java/com/ushahidi/swiftriver/core/api/controller/BucketsController.java
	src/main/java/com/ushahidi/swiftriver/core/api/dao/AccountDao.java
	src/main/java/com/ushahidi/swiftriver/core/api/dao/impl/JpaAccountDao.java
	src/main/java/com/ushahidi/swiftriver/core/api/dao/impl/JpaRiverDao.java
	src/main/java/com/ushahidi/swiftriver/core/api/service/AccountService.java
	src/main/java/com/ushahidi/swiftriver/core/api/service/BucketService.java
	src/main/java/com/ushahidi/swiftriver/core/api/service/RiverService.java
	src/main/webapp/WEB-INF/spring/web-context.xml
	src/test/java/com/ushahidi/swiftriver/core/api/dao/impl/JpaAccountDaoTest.java
	src/test/java/com/ushahidi/swiftriver/core/api/service/AccountServiceTest.java
	src/test/resources/config/sql/test-data.sql
Metadata migration script

* Script for migrating data from the account_droplet_* tables
to the bucket_droplet_* and river_droplet_* tables. Since the account_droplet_*
tables have no information on the origin of the drops, i.e. river or bucket, the
data will be copied to all the new metadata tables
Refactor tests and DAO implementation classes

* Refactored the unit tests for links, places and tags.

* The hash and canonical name values are now set in
the DAO implementation classes. In this way, the tests
verify the generated hash against the expected value
Fix: Incorrect column mapping
Add missing unit and integration tests
Authentication when adding drop metadata

* Only collaborators and owners of a bucket can add metadata
to the drops within the bucket
Fix: wrong test data

* The test data values for latitude and longitude in
BucketsControllerTest#addDropPlace were interchanged
Implements add/delete tags, places & links to river drops
Fix: wrong table name reference
Fix: Query to fetch the drop image
Refactor BucketService#addDrop

* When adding a drop to a bucket, the  the source of the drop
i.e. whether its a river or a bucket, must be specified

* Added a veracity column in buckets_droplets to track the no. of times
a drop gets added to a bucket

* Limit the list of buckets that a drop is in to those that are only
accessible to the querying user
Fix JpaDropDao#populateBuckets

* Check for the drop source before populating the list
of buckets the drop is in.
Authorize removal of drop from bucket

* Only collaborators or creators of a bucket can remove
a drop from the bucket
Refactor: Remove unnecessary DAO methods