Revise property checks, encoding, and decoding

Properties are given in the configuration map "_properties" (instead of
"_checkProperty") in the format {propertyName: propertyType}. 

If a matching function is found in PropertyEncoding.js (which includes
checks) / PropertyDecoding.js it is called with the value. If the
propertyType is true instead of a string, any value is allowed. If it's
an array, the first entry is the name of the encoding/decoding function,
all other are passed along the value to the function.

Change-Id: I580423563650dfe1891b5e7801acbc07a4764e7e