Guard mergeMixins parameters more generally

Previously we caught passing null or undefined into Object.create() or
.extend(). Now we also catch any other invalid types like strings,
numbers, or arrays.

We cannot use Ember.typeOf, since runtime depends on metal and we don't
want circular dependencies. For the weird array check, see
http://stackoverflow.com/a/1058753/525872
Improve naming and code style
No longer support RunLoop instantiation without `new`.

Other code cleanup too.
More metal cleanup.
Replace occurances of goToState with transitionTo.
Cleanup code style.
Start hashing out some documentation for Ember.State.
Merge pull request #939 from jbrown/refactor/statemanager_cleanup

Some states-related cleanup
Make routing unwind properly

This commit is a number of things that help with
the goal of making the back/forward buttons work:

* The route method on a router will send the
  `unroute` event before the `route` event. This
  will cause the route to unwind to a shared
  parent state.
* Add a bunch of inline docs to routable.js
* Move routing concerns to `Router`
* Make stateMeta more general
Fix mistake
Don't special-case the top-level '/'

When unrouting, go up one state when encountering
any state with the route '/'.
Don't update the route if we're routing
`collection` should take emptyViewClass as string

The `{{collection}}` helper should accept having
its `emptyViewClass` set as a string, to be
displayed when the bound `content` has a length of
zero.
Support #each foo in this and #with this as bar
More documentation for states.
Remove unused code.
Initial pushState based location implementation
Adding documentation
Add some convenience computed property macros to replace the major usages of binding transforms
Fix broken upload_latest task by specifying version for github_api