Implemented DB UserDetailsService and ClientDetailsService

* Authenticates users and clients from details stored in the db.
Merge branch 'master' into rivers-dev

Conflicts:
	src/main/webapp/WEB-INF/spring/web-context.xml
Encrypt client secret
createAccount and modifyAccount implemented.
Create, Get, Delete client apps implemented.
modifyClient implemented.
Activate account in addition to user during activation.
Fix activation

* Set user not expired and locked.
* Grant user role
Token both activates account and changes password

* A token during modify account will both activate an inactive account
and if a modified password is present instead of either just
activating/reseting password and not both.
Reset Password: Throw error if token present but password missing

* Indicates to the user there is a problem.
Merge branch 'master' into rivers-dev

Conflicts:
	src/main/java/com/ushahidi/swiftriver/core/api/controller/AccountsController.java
	src/main/java/com/ushahidi/swiftriver/core/api/service/AccountService.java
	src/main/resources/config/sql/schema-create.sql
	src/main/resources/config/sql/schema-destroy.sql
	src/main/webapp/WEB-INF/spring/web-context.xml
	src/test/java/com/ushahidi/swiftriver/core/api/controller/AccountsControllerTest.java
	src/test/java/com/ushahidi/swiftriver/core/api/service/AccountServiceTest.java
	src/test/resources/config/sql/test-data.sql
createDrops implemented

* Translation of php version with drops and meta batch inserts for
performance.
* Mutex ensured through an exclusive row lock on the seq table.
* Media thumbnail, tag trends and authorization pending.
Add @ResponseBody to RiversController#deleteRiver

* Without the @ResponseBody, the API will attempt a redirect
thereby causing a 40x status to be returned to the client
Merge branch 'rivers-dev'

Conflicts:
	src/main/java/com/ushahidi/swiftriver/core/api/service/BucketService.java
	src/main/resources/config/sql/schema-create.sql
	src/main/webapp/WEB-INF/spring/web-context.xml
	src/test/resources/config/sql/test-data.sql
PostDrops: Fix for drops with any metadata item null

* A list of drops that had a drop with either tags, places, links or
media null was causing an ArrayIndexOutOfBounds exception due to the
'i' variable not updating correctly thus an incorrect index created.
* Solution is to use a for loop instead of foreach to ensure that both
i and j counters always increase when a 'continue' statement is
encountered.
PostDrops: Fix rivers_droplets sequence

* Sequence was not updating after inserting drops because
dropRiverList.size was being read before the list was initialized.
PostDrops: Update river max_drop_id and drop_count

* Update the rivers table with these values when inserting into
rivers_droplets
Fix: Expected test values

* For the BucketsControllerTest#addCollaborator and
RiversControllerTest#addCollaborator do not check for the exact
value of the returned collaborator_id. This is because JUnit doesn't guarantee
the test execution order so a if test case that adds an either a bucket or river
collaborator is executed before the controller test, the returned id will be
different as the RDMS rollback does not affect the AUTO_INCREMENT value

* Remove unnecessary imports
RiverChannels: Send notificaiton to MQ on update

* Added Spring AMQP
* Send a notificaiton on channel add, delete or modify.
Added MockAmqpTemplate

This allow integration testing without a real broker running.