replace OTData with std::vector (and associated changes)

This is the first of a few major groundwork changes to prepare for the Bitcoin compatible crypto code.

I don't care about line length, or format issues, or Warning-Errors about this review.  I want a review of the changes that may introduce security, or stability issues.

If this build doesn't work on your OS of choice please send me a pull request that fixes it.
This complies and tests on Mac (Clang), and Windows (MSVC).  I have fixed a few windows bug while at it.

I want to get on with coding much harder things than this.  So anyone who is unable to code the harder things should be nice to me, and help me out with the pedantic style, format, non-stability, non-security review fails.

Some review notes:
The ot_data_secure_t isn't used.  It is going to be used in the next pull request.
The custom std::allocator uses the same code as used in OTPassword.  This is not up for review, as I wish to make more changes to this part, however since it is security-sensitive code this should go into it's own pull request.

Up next is the replacement of OTPassword with ot_string_secure_t / ot_data_secure_t.  This again will have wide-reaching changes.

Cam.
It looks very strange to me that we have to do serialization in 3 different C++ files. This violates the single responsibility principle. 

On the other hand, it's no regression because that's how it was done before. To make things clear I suggest that you rename the helpers in the following scheme: `appendShort` to `appendShortSerialized` and so on. Moreover, a comment that explains what the problem is that these helpers are solving.