Undo my merging of user and project controllers

User and project controllers are now separate entities again,
which (though it seems to violate DRY as a lot of code is copied
and pasted between the controllers) will allow those controllers
to diverge in the future. For example, the user controller will
need to be able to hide and show a password form, while the
project controller will not.
Add new model for user ids and passwords
Add change_password function to the SF API
Identity field is now username, not email

We expect some users to not have email addresses, so we
shouldn't rely on those as primary identifiers.
Add require-equal directive for validation

The require-equal directive is designed to be used as an
attribute on an input field, with the value of the attribute
being the Angular expression whose value this input field
should match. Most useful in password-changing inputs, e.g.:

<input type="password" ng-model="record.password"/>
<input type="password" ng-model="record.confirm" require-equal="record.password"/>
Track group membership in user model

Our user model was not keeping track of group membership,
which would make it hard to create a new user via the user
model code and then have Ion Auth be able to log in as that
user. Now fixed.
Admin users can now edit passwords

When creating new users, or editing existing users, a new
password can be assigned. (Without needing to know the
existing password). This will allow admins to create new
users accounts and activate them right away, so that the
new account can be logged into immediately.
Improve looks of user data view
Merge remote-tracking branch 'origin/master' into feature/api

Conflicts:
	src/angular-app/sfadmin/js/controllers.js
	src/angular-app/sfadmin/partials/userdata.html
	src/models/user_model.php
	src/service/sf.php
yaps (yet another pesky semicolon)

* Going for the smallest commit :-)
Load new Javascript libraries in sfadmin
Disable Save button when form is invalid

At the moment, the only time the form is invalid is when
the password and confirmPassword fields don't match.
Merge branch 'feature/api'
Merge remote-tracking branch 'origin/master' into feature/projectadmin