follow up #7, add .define function

Thanks for your comment in #7, @Marak
I have added define function and add tests for it, and doesn't break anything you have before :)

BTW, i see a TODO(test skip) in your `test/immutable-data.js`, in my opinion, `data.name` should be `string`? because you define the `default` and `type` in your schema, correct? any other reason cause you must skip this case?