Use Boost::Filesystem v3 on Boost 1.44 and later.

Issue 184.
Fix Boost version detection.

Issue #184.
Enable synonyms for deprecated functions.

Synonyms for deprecated Boost::Filesystem v2 functions such as
path::file_string() aren't enabled by default.  We'll turn on on for now
since we use them everywhere.

Issue #184.
Boost::Filesystem v3 doesn't have wide versions.

In Boost::Filesystem v3, there's only boost::filesystem::path, no wpath.
Although Boost provides a typedef for backwards compatibility, it's
actually making things harder to figure out, so we won't use it.

Issue #184.
Handle string<->path_t conversion in Str.

The "P" in Str::PU and Str::UP no longer refers to the platform-specific
path string type; instead, it refers directly to path_t.  To complement
this, Str::PW (path_t to wide string) and Str::WP (wide string to
path_t) are now provided.

The upshot of this is that Str now can convert between any combination
of narrow string, wide string, and path_t.  While this complicates the
implementation, it simplifies usage of path_t significantly and hides
the differences between Boost::Filesystem v2 and v3.

Issue #184.
Remove unused Str path_t support bits.

Str::UU is no longer used because Str::PU/UP use path_t instead of
strings.

The operator/ overloads are no longer necessary since Str::UP returns a
path_t.
Fix narrow path cases.