Add keyed json protocol

a protocol I use regularly for internal representation of arbitrarily structured data with a sortable key