Alternative to PR #61

This PR is a continuation of a419262.  It allows invokable objects to be shared, extended, and protected.  The unit tests have been updated (where applicable) to use data providers to ensure that invokable objects work in all situations where Closures work.

Unlike #61, this PR contains no major refactoring.