fixed Bind to support objects being overwritten
Allows setting of nested objects, and bit of a rewrite.

Added comments around code, also found that the setter was being called multiple times, so I fixed that.

There was also a race condition in the logic, if you callback on a property referenced the object you had created, it would fire immediately (which is good for initilisation), but it would mean you couldn't refer to the object in the callback:

var data = Bind({ ... }, { foo: function () { alert(data) }); // would fail

So the callbacks are now deferred on initialisation, only for a single tick, but it works (again, the magic of setTimeout...).

Also added a convience method of __export which returns the object without the setters and getters. Not sure it'll survive further itterations though.

TODO: some way of adding new properties and listen paths post initialisation...maybe.