Added new function islandora_copy_object() can copy existing/new fedora objects.

It's a bit leaky in that it makes assumptions about the members that will exist
on AbstractObjects, but we can't make cloning work at the moment as it doesn't
really work well with inheritance, every decendent would have to define __clone
functions properly and I figured a wrapper function like this would be easier
to support in the long term, until we make the movement to decorated objects.
Adam's recommendations.
display top level collection name as repo link. Also updates breadcrumb with top level collection name
clean up
clean up vars
code sniffer cleanup
another approach to getting the breadcrumb to display the link title
Initial implementation of the hooked access callback...

...  Now have to make it get used everywhere.
Add hook_islandora_datastream_access()...

...  Also, start using our new access functions in a few places.
Add access checks to view/download links.
Add access checks.
Add a couple more access checks.
Add the strict access flag.
Use the hooked access callback in place of the any/all cases.

Leaving the functions called in place, in the case that they're called
elsewhere.
Pass the user along as we should.
Pass the content models...
The namespace check is handled via the hooked access callback.
Revert "Pass the content models..."

This reverts commit 2a654d6e837c4c8809d22b99bed731c1dc847e70...
The content models weren't needed or used... Messed up matching braces in
my head.

Conflicts:
	islandora.module
Return the final result from the permission anonymous functions.

...  Was missing... Also, the handling of an empty array of permissions
was happening only implicitly.
Add some basic tests for the hooked access callback.