Change flow so that we assert after the line that should fail.  Avoid returns.
Reimplement ORM_MPTT relationships with a similar API to regular ORM
relationships per a suggestion from Shad[1].

Exmaple before/after pairs:

   $item->children()
-->$item->children->find_all()

   $item->viewable()->children()
-->$item->children->viewable()->find_all()

   $item->children(1, 2, array("type", "=", "album"))
-->$item->children->where("type", "=", "album")->limit(1)->offset(2)->find_all()

Consequences:
- Simpler, more consistent API for dealing with relationships
- Get rid of ORM::unloaded_instance() hack
- Reduced code size
- Longer call chains where it's used

[1] https://github.com/gallery/gallery3/commit/88b6865f472b4203b9ef04d4b99e3310ecb960d2
Add a todo:
      // @TODO: revisit this - it's silly to have a design which allows us to not have an identity
      // provider.
Fix indentation.
Make ORM_MPTT::parent a regular ORM relationship.  This exposes issues
where relationships can get stale and occasionally need to be reloaded
- Access_Test::test_moved_items_inherit_new_permissions started
failing and highlighted it.  So reload some relationships if we
believe that they might be out of date.  This wasn't necessary before
we started making more things relationships (and possibly was one of
the original reasons why we didn't use relationships for this code).
Merge branch 'kohana_3' of github.com:gallery/gallery3 into kohana_3
Fix a couple of validation exceptions.
Update code for new ORM::has() API which takes a model name as the
first argument.
Oops, ORM::has() requires the table name as the alias, not the model
name.  Sigh.  Fixed.
Use HTTP_Exception::factory() where appropriate.  In a couple of places
in User_Controller_Password it looks like we were throwing a 503 by accident,
which makes no sense.  Changes those to 403s.