Feature/scoping

@imlucas 
1. support scoping! (even on embedded document)
2. added relevant tests
3. fix the bug that causes crash when the field data is non-string (_.template(/*must be string*/ arg))
4. some name changes (avoid emit method)
5. made each Document has its own Context (so that each Doc can have an independent state. Might be useful for future)

Feature preview (from updated me_in_a_nutshell.json):
```json
"scoping": {
  "name": "{{chance.name()}}",
  "greetings": "This is {{this.name}}. I got ${{this.bank.balance}}.",
  "bank": {
    "balance": 100
  }
}
```

P.S. It's been a rough afternoon. I was completely tortured by the behavior of closure. 
```js
var func = [];
for(var i in {one: 1, two: 2}) {
  func.push( function() { return i; } );
}
```
Both functions return 'two' because the function does not 'take a snapshot' of the variable.