Rollup

Fixed some issues with synchronization "safe" lock/unlock templates
(templates which take lambdas and call the lambdas while holding the
lock).

Fixed some issue with templates not taking "universal references" where
they should.

Added experimental (i.e. untested) support for poll() and WSAPoll() OS
calls to socket library.

Started working on a "choose" template, which acts like a type safe
union (very unfinished).

Vector can now act as a buffer for non-trivial types (decided that
restriction was just taking too much control away from the programmer).

Fixed a few random issues.

Changed the way the headers work for including each other (they now
assume that they're all in the same folder, which may or may not be in
the INCLUDE path, which makes it easier to segregate them from other
headers when using the library in a project).

Endianness checks now work with floating point.