Adds validation feature
Simplifies `.authenticate`
Ensures uniqueness of FCA numbers for Principals

* Reworks factory callbacks to run on `build` and `create`
Adds validation per the story comments

* Some fields are 'approximately' valid
* Needed to clarify web address validation so left this out for now
Reworks to use SitePrism's `elements`
Merge pull request #39 from moneyadviceservice/4848-principal-provides-invalid-information

Completes validation per the story requirements