Fix non latin characters being misinterpreted by `update_post_meta()`

Issue: http://wordpress.stackexchange.com/questions/53336/wordpress-is-stripping-escape-backslashes-from-json-strings-in-post-meta

Solution: update_post_meta() is capable of storing an array, which will be serialised. On retrieval the value is unserialised.

Includes legacy support which does not break old versions, but updates each on next update.