Custom permissions

This change allows a custom access control function to be specified.  The default is not sufficient for some projects and it is desirable to override it to give more fine-grained control.

Changeset includes updates to README and tests.  I've followed your test method naming convention of including a counter.