Pass in holes rather than the holeModel to userModel.

The userModel doesn't really have a need to query holeModel itself since
its doing a find.  This will help do things like process holes once, up
front, before passing into users.
Move most auth checks into model layer.

The controller/route keeps responsibility for getting the user info and
passing it into the model, but the model is where the check that the
hole is visible or accepting submissions is done.