Refactor loading of post values for the API

Remove huge union query in Post model. Instead we're iterating over a
list of post attribute types and loading values through
$model->load_values_for_post().

Attribute types are now stored in Model_Form_Attribute::_attribute_types.
This should allow us to extend later and add custom type through
plugins.

Post_Value:: load_values_for_post() grabs the values for this post
along with their attribute data. We then iterate over these as we
did before.

We've also moved the date time formatting into the Post_Datetime
model get/set functions.
Remove special handling of 'unknown' for date fields, use null instead
Skip saving values for empty or null fields

This is so we don't save the current date, when actually 'null' was sent.
Also avoid extra junk data for empty varchars, etc.