Major refactoring of the module.

I've done some refactoring of this module for our internal use and this is a PR that reflects those changes, in case you're interested.

Here's a [fork of the original demo plunker](http://plnkr.co/edit/zyyWw4xDcK0OICEisTTF?p=preview) w/the code from this PR pasted into the top of ```app.js```. Everything seems to be working AFAICT -- this repo should probably have some test support added at some point.

The details for this refactoring are here:

- Remove duplicated getInheritedData function from angular
  and use directive controllers "require" feature instead to
  make use of inherited controllers.
- Use "require" in ngMultiTransclude to optionally accept
  either ngMultiTemplate or ngMultiTranscludeController
  as controllers (throw an exception if at least one is
  not present).
- Change ngMultiTransclude to simply register with either
  of its required controllers; no longer leak any
  implementation details from those controllers.
- Share the same controller function for ngMultiTranscludeController
  and use $transclude to minimize transclusion code and avoid
  any need for link functions.