Make listview pagination actually functional

Since the data is being supplied by the controller, picking which
slice of data should be presented in the list view is also the
controller's responsibility. Therefore, the list view now passes
two parameters to the controller's search() function: currentPage,
and itemsPerPage. The latter is hardcoded for now, but that will
eventually change.
Make "Remove Users" button work in sfadmin

There is now a user_bulkdelete function in the JSON-RPC API. I
couldn't find a corresponding bulk delete operation in Mongo, at
least not one that takes a list of user ids. (There's a "bulk delete
everything that matches this search parameter" function, but that's
not the same.) So the implementation in the model just cycles through
the user IDs and deletes them one at a time. If we find a better way
to bulk delete a set of IDs in Mongo, we can swap out the appropriate
function later on.
Use PHP 5.3 syntax for database setup script

If our deployment server has PHP 5.3 or below, the [] syntax for
arrays won't be available. It's a pretty trivial change to make,
so we might as well make it.
wip: breadcrumbs

Routes are working.  I now need to make a breadcrumbs template that uses the breadcrumbs service
Prevent blank records from being added to DB

Some blank records were slipping past our checks in updateRecord(),
because the type-equality comparison (using ===) was false for
those blank records. Using == doesn't work either, but using
JSON.stringify() does.
Fix password changing

Class names were inconsistent with the rest of the code, and the
PasswordModel.php classes weren't using PHP namespaces. Fixed.
Use UserService instead of JSON-RPC directly

Password changing now uses the UserService controller instead of
calling the JSON-RPC function directly.
Fix double-submission of form

Fixes #23
List view paging now handles deletes correctly

By shifting the list view paging variables (currentPage and
itemsPerPage) to the parent scope (the controller) instead of
keeping them in the list view scope, we can track the current
page through list view refreshes even when it's the controller,
rather than the list view directive, that's triggering the
refresh. Now when a record is deleted, or a new one is added,
the current page in the list view can be maintained.
Add ability to only force a DB reload when needed

Now when paging through the list view, a DB reload will not be
triggered every time the user changes pages, but only when data
has actually changed and the view needs to be refreshed.
Add "items per page" selector to list view
Update list view's page count programatically
Fix initial page load of list view

List view was loading at page "0" during Angular initialization.
Merge branch 'master' into feature/listview

Conflicts:
	src/angular-app/sfadmin/js/controllers.js
	src/models/PasswordModel.php
	src/models/UserModel.php
	src/service/sf.php
Fix bug where deleting twice in a row would fail

Since the selected array wasn't getting cleared, deletions would
fail the second time with a "can't find ID 12345" error in Mongo.
The fix is simply to clear the selection list after hitting the
Remove Users button, because the records previously selected are
now, of course, no longer in the database.
Align items-per-page control with paging controls

Minor CSS tweaks here, no functionality change.
breadcrumbs now working in sfchecks #30
Merge branch 'feature/breadcrumb'
Merge remote-tracking branch 'origin/master' into feature/checks

Conflicts:
	src/angular-app/sfchecks/js/controllers.js
	src/angular-app/sfchecks/js/filters.js
	src/angular-app/sfchecks/js/services.js
	src/angular-app/sfchecks/partials/question.html
	src/css/sf.css