Remove MTLModelEncodingBehavior, base NSCoding on storage behaviour

Encoding now based on property storage behaviour. 

If this is along the right lines I can sort out the tests and make any necessary changes. I think we probably need more explanation of the encoding behaviour now that `MTLModelEncodingBehavior` is gone. The doc for `encodeWithCoder:` might be the best place to add this.

Closes #276