Changed the way metadata is defined and read for observers.

Metadata fields that are now defined as 'true' or that are present but not given a value, must be present in all uploaded datapoints. Conversely, when defined as 'false', the metadata field cannot be present in an upload. If a field is not defined, then its value will be saved if it is present, but the point is valid regardless. Unknown metadata fields are still ignored.

Also, there is a new feedback format for stream data uploads. The response will include a JSON array of JSON objects where each JSON object indicates a point that had an issue. The JSON object indicates the point's index in the upload array, a short, user-friendly description of what is wrong with the point, and whether or not the point was persisted in the database.

Closes #469
Closes #470