feat(component): Support expressions and mapping to controllers

@NgComponent(
    template: r'<content></content>',
    publishAs: 'ctrl',
    map: const {
        'attr': '@ctrl.attr',
        'expr': '=ctrl.expr',
        'ondone': '&ctrl.onDone',
        'onOptional': '&ctrl.onOptional'
    }
)
class IoControllerComponent {
  Scope scope;
  var attr;
  var expr;
  var onDone;
  var onOptional;
  IoControllerComponent(Scope scope) {
    this.scope = scope;
    scope.$root.ioComponent = this;
  }
}
refactor(directive): move selector to common root.