Updates for Clang 3.4
Fix null dereference with id<Proto> types

Doesn't correctly use the protocol's definitions yet though.
Fix method name typo
Validate against keys in protocols
Break into multiple source files
Move test files
Add "make run" target to run against tests