Adding support for other protocols besides the built-in ones

Issue #18
Adding spec tests for #18
Merge branch 'issues/18_strict_proto'