Remove use of new Function() to achieve Function.name goal

* [Don't be evil ;)](http://www.reddit.com/r/javascript/comments/2bety7/class_name_preservation_with_javascript/cj4wnz0)
* Throw if no constructor or a non-named constructor is provided
* Massive simplify `create` method to avoid messing with `arugments`
* Reorder arguments, put `SuperClass` at the end so it's clearly optional
* Fixed completely broken Jasmine tests