(CFACT-137) Define UNICODE on Windows

Force use of Unicode APIs on Windows by defining UNICODE and _UNICODE,
following the recommendation of utf8everywhere.org, and convert to and
from UTF16 for the API calls as needed.
(CFACT-137) Add Boost.Nowide for Windows UTF-8

Add the Boost.Nowide (candidate) library for UTF-8 aware standard library
wrappers on Windows.
Replace our own to_utf8/to_utf16 and environment manipulators with
Boost.Nowide. Also use it for fstream/fopen. cout/cerr aren't replaced due
to the dependency on building a binary object, to be resolved later.
(CFACT-137) Use Boost.Nowide cout/cerr adapters

Use the Boost.Nowide cout/cerr adapters that ensure UTF-8 will be printed
correctly on Windows. Requires building the Boost.Nowide library on
Windows, and adds tests for the library.
Merge pull request #228 from MikaelSmith/bug/master/CFACT-137-UNICODE

(CFACT-137) Use UNICODE APIs on Windows