Third pass at handling post meta

This pass at post meta builds off the previous, but changes the format around.

When retrieving meta:
```json
{
	"ID": 13,
	"post_meta": [
		{
			"ID": 33,
			"key": "my_meta_key",
			"value": "My value!"
		}
	]
}
```

To update, you just change the value and send it back:
```json
{
	"ID": 13,
	"post_meta": [
		{
			"ID": 33,
			"key": "my_meta_key",
			"value": "My new value!"
		}
	]
}
```

To add a new value, you add an object to the array without an ID:
```json
{
	"ID": 13,
	"post_meta": [
		{
			"key": "another_key",
			"value": "Another value"
		}
	]
}
```

To delete a value, you set the key and value to `null`:
```json
{
	"ID": 13,
	"post_meta": [
		{
			"ID": 33,
			"key": null,
			"value": null
		}
	]
}
```

Side-effect: you can rename meta keys by changing the `key` when updating, as it's no longer used as the primary key.

Disadvantages: This cannot be read from the meta cache. I don't see this being a huge issue, as it's only exposed on `context=edit`.