fix(Scope): ensure that isolate scopes use the main evalAsync queue

Previously any $evalAsync task scheduled from a isolate scope or a child of an isolate scope
would never execute because we never flushed this queue
fix($compile): always instantiate controllers in parent->child order

Previously it was possible to get into a situation where child controller
was being instantiated before parent which resulted in an error.

Closes #2738
Updated the class example to include string, map and array syntax
Merge branch 'pr-3084'