Add ActiveModel + related dependencies
Added RapidConnectService model

The existing validations are messy, adhoc and error-prone, so this is
the beginning of moving towards a driving this all through model
classes.
Fix some issues with the RapidConnectService model

* Need somewhere to store the identifier
* Added #to_s
Update /registration/save to use new model class

Tests extensively reworked to be more focused and tidy.
Add test that secret length is enforced
Added explicit check for attribute name validity

Relying on #send to fail opens up any method ending in '=' to the user.
More robust to force everything through a whitelist.
Move identifier generation into model class
Use model class for admin edits as well

Includes a refactory / tidy-up of the /administration test cases, to
prove this change hasn't broken things.
Fix intermittent failure in export API tests

Because Sinatra::Base.set(..) operates at the class level, the state was
not reset between test runs. For certain random seeds, this caused the
export API to be disabled prior to tests which required it to be
enabled. Since those tests didn't turn the flag back on, the tests
failed.
Add missing require for redis-rack
Use new model class everywhere, and DRY up a bit

It's a shame the line count is basically neutral, but at least the code
looks cleaner now.
Change 'if !condition' to 'unless' in a few places
Add test case for missed branch

In /administration/services/update, the case where a bad identifier had
been provided was not covered.
Update dependencies to fix deployment problem

ffi 1.9.4 was yanked from rubygems.org (assuming critical bug), so
update this to 1.9.5 and grab other updates from the last few days.
Ignore lines which can't be reached by tests
Fix style of error messages during registration
Remove unnecessary check for authenticated user

Authentication is forced for /registration/*, so it's safe to assume
that session[:subject] is not nil.
Add client-side validation for secret length
Merge pull request #14 from ausaccessfed/feature/use-active-model

Use ActiveModel to represent Rapid Connect services and provide validation logic