Issue #1277 - 'as' parameter for 'with' binding

Using "as" to give an alias to "with" binding
---------------------------

I've come across a few cases where it might be useful to give the current context an alias, particularly in situations where the context switches several times and a descendant element needs to bind a property of one of its ancestors. @rod333 provided an example of this in issue #1277.

This PR should resolve #1277, supporting the following syntax:

```html
<div data-bind="with: { data: container, as: 'container' }">
   <div data-bind="foreach: {data: rows, as: 'row'}">
      <div data-bind="foreach: {data: categories, as: 'category'}">
         <a data-bind="click: categoryClickFunc">This is clean syntax</a>
         <a data-bind="click: row.rowClickFunc">This is also clean</a>
         <a data-bind="click: container.containerClickFunc">This is nice :)</a>
      </div>
   </div>
</div>
```