P001Model#surrogate convenience creator method

• Added a surrogate method to P001Model, which calls the `P001ModelSurrogate#surrogateWithInstance:` creator method.
• Switched InchLocation to use the new `surrogate` method.

Also:
• Removed duplicate `#import "InchCoord.h"` from InchLocation.m.
Updated PuckEntity location syntax

• Changed location property's `InchLocation *` type to `id<InchLocation>`.
• Replaced location synthesize with a custom getter that returns a surrogate.
Changed InchCoordish#doubleValue to be readonly

Surrogate properties should be immutable— this ensures those with access to the model instance itself can mutate it.

• InchCoordish's `doubleValue` property is now readonly.
• InchCoord now has a shadowing readwrite `doubleValue` property.
Likewise, InchLocationish#cgPointValue readonly-ified  

• InchLocationish's `cgPointValue` property is now readonly.
• InchLocation now has a shadowing readwrite `cgPointValue` property.
Renamed InchCoord's value to nsValue

The property name `value` was too generic for a NSValue-wrapping convenience accessor.  So now it's `nsValue`.
Added protocolType to P001Model/Surrogate

• Added  dynamic `…ish`-protocol finding method `(Protocol *)protocolType` to P001Model as both an instance and a class method.
• Added `(Protocol *)protocolType` to P001ModelSurrogate as an instance method (since it would forward to P001Model's instance method without it, but that wouldn't work if the model dies and we already know we only need to talk to the model's class).