DataContractJsonSerializer, sub-model support

Great extension!  I added to it to support `[DataContract]` and `[DataMember]` for compatibility with the `DataContractJsonSerializer`.  I also added support for sub models.  

I didn't do anything with the UnitTests or anything.  My only intended changes are in 

  * AstVisitor.cs, 
  * JsProperty.cs, 
  * JsPropertyViewModel.cs, and 
  * ViewModel.cs 

but I don't know how to exclude the rest of these files from the pull request.

Examples below:

    [DataContract]
    public class ParentModel
    {
        [DataMember]
        string basic;
        [DataMember]
        string[] array;
        [DataMember]
        ChildModelA childModelA;
        [DataMember]
        ChildModelB childModelB;
        [DataMember]
        ChildModelA[] childModelAs;
        [DataMember]
        List<ChildModelB> childModelBs;
    }
    [DataContract]
    public class ChildModelA
    {
        [DataMember]
        string basic;
        [DataMember]
        ChildModelB childModelB;
    }

    [DataContract]
    public class ChildModelB
    {
        [DataMember]
        string basic;
    }

    // vvvvvvvvvvvvvv        Converts to          vvvvvvvvvvvvvvvvvvvvvvv

    function ParentModel(parentModel) {
        var self = this;
        self.basic = ko.observable(parentModel.basic || '');
        self.array = ko.observableArray(parentModel.array || []);
        self.childModelA = new ChildModelA(parentModel.childModelA || {});
        self.childModelB = new ChildModelB(parentModel.childModelB || {});
        self.childModelAs = ko.observableArray((parentModel.childModelAs || []).map(function (e) { return new ChildModelA(e); }));
        self.childModelBs = ko.observableArray((parentModel.childModelBs || []).map(function (e) { return new ChildModelB(e); }));
    }

    function ChildModelA(childModelA) {
        var self = this;
        self.basic = ko.observable(childModelA.basic || '');
        self.childModelB = new ChildModelB(childModelA.childModelB || {});
    }

    function ChildModelB(childModelB) {
        var self = this;
        self.basic = ko.observable(childModelB.basic || '');
    }