Fixes #881 - Export component prototype methods on the HTMLElement

Here's a first pass. I kinda like the way this API feels -- it's important here that we're pretending the `can.Component` prototype is the `HTMLElement` prototype (with a couple of exceptions for other options).

See the test case for other/various little details about how this works.
Not sure this will ever be performance sensitive, but I've read that generating the function can be 3x faster in chrome.  IE:

```js
return new Function("can.data( ... )."+name+").apply(this, arguments)");
```