Firebase example + bug fixes

- move ensurePath() to Observer.js
- add Observer.ensurePaths(), which deals with the situation
  when a scope object with nested values is given a new value
  with incomplete nested structure. e.g. this.val = {}
- fix Directive argument regex
- sd-model: no longer locks during set() so filters work on
  input fields
- sd-repeat: handles undefined update, also fix transition
- utils.attr now takes additional `noRemove` argument
- ViewModel.$emit now also triggers event on itself
fix sd-model selection position issue
Tests

- unit tests for Observer:
  - unobserve()
  - ensurePath()
  - ensurePaths()
  - Multiple observers
- unit test for sd-model:
  - should only lock update if it has no filters
- functional test for sd-model in validation.js:
  - should remember and restore selection position
    when it has filters
- functional test for Observer.ensurePaths():
  - should allow setting a nested scope object to {}
only emit get events during deps parsing - improves perf
remove dead code
incomplete new exp parser implementation
New ExpParser implementation

- extract all paths and replace them with correct reference
- in the process, create missing bindings on the owner vm's compiler
unit test for new exp-parser implementation
use simple bind instead of native bind, remove vm.$get()
0.5.1