Tidy up validations in the Need model

Use the `validates` format to specify validations
for multiple fields in a single declaration
Change validation to 1.9.3 hash format.
Merge pull request #37 from alphagov/tidy-up-validations

Tidy up validations in the Need model
Don't allow identical needs to be created

Add a new validation to ensure that a need with the same role, goal and
benefit as an existing need cannot be created.

This is designed to solve the problem where users mistakenly enter a need
from a spreadsheet which has already been entered. It partially mitigates
an issue where, when requests time out in production, the load balancer 
sends the same request to another machine, creating two identical needs.
Remove superfluous blank line.
Implement duplicate checking with an index.

Index code from @bishboria's ecb5b01fc89ddfa87328421a03e6a5d7885a8dab,
but with @jordanhatch's error handling when the save fails.

Mongoid and DatabaseCleaner don't set up or tear down indexes by
default, and I don't think there's a clean way to do this before and
after the entire test run; it's also potentially expensive to do this
before and after every test, not to mention tricky to do in Mongoid
without generating reams of debug output (from the
`Rails::Mongoid.create_indexes` method, which takes a glob pattern for
model files). I went with the less elegant solution of ensuring the need
indexes were in place for the test I knew would require them.
Merge pull request #39 from alphagov/reject-idential-needs-with-index

Implement duplicate checking with an index.
Merge pull request #38 from alphagov/reject-identical-needs-on-create

Don't allow identical needs to be created
Merge branch 'master' into merging-duplicates

Conflicts:
	app/models/need.rb