Add date and time encoding
Smarter protocol format decision

Only request binary format arrays when we can decode its elements.
Prepares for array encoding.