(CFACT-68) add solaris socket libraries to compile

Solaris requires -lsocket for programs using socket api. This patch
adds the -lsocket library if the operating system detected is SunOS
(CFACT-68) Add -Wextra only if the platform is not solaris

The gcc built on solaris complains of problems in compiling logging.cc when
-Wextra is enabled in cfacter. This seems related to https://svn.boost.org/trac/boost/ticket/8811
which complains of same errors. This patch turns off -Wextra when the OS detected is SunOS
(CFACT 68) Use struct utsname when referring to utsname

The utsname is a structure exposed in <sys/utsname.h> unfortunately, in
Solaris, there is a global variable called utsname, which makes the use of
utsname as a type illegal. This patch changes the invocation to `struct utsname`
(CFACT 68) Provide a skeletal add_platform_facts

This comes in in CFACT 70
(CFACT-59) Add id and gid facts
(CFACT-57) Add facterversion fact
(maint) Fix build on OSX from merging in id/gid fact implementation.

Missing an include for OSX.
(CFACT-62) Add timezone fact
(CFACT 70) Add kernel facts for solaris

Before this patch, the Solaris operating system did not produce kernel facts.
Unfortunately the posix kernel facts could not be used as it relied on the uname()
system call, which according to posix, returns zero on success. However, on solaris,
it returns it returns any positive value on success[1]

This patch adds the solaris kernel facts which checks the return value of uname
system call correctly for solaris.

[1] http://www.opensolarisforum.org/man/man2/uname.html
(CFACT 70) Add posix::ssh facts for solaris

Before this patch, the Solaris operating system did not include ssh facts.
This patch adds the posix ssh facts, which works asis in solaris.
(CFACT 70) Add posix::operatingsystem facts for solaris

Before this patch, the Solaris operating system facts were not included.
This patch adds the posix operating system facts, which works asis in solaris.
(CFACT-58) Implement si_string and percentage utility string functions.

Implement a "si_string" function that converts a byte count to an amount
with the largest SI-suffix (e.g. 1025 bytes => 1.00 KiB).

Implement a "percentage" function that converts an amount used out of a
total to a percentage string (e.g. 9094 out of 10000 => "90.94%").
(maint) Removing facter::util::join.

Boost already implements this string algorithm.
(CFACT-58) Implement mountpoints and filesystems fact for BSD/OSX.

Implementing the mountpoints (structured) and filesystems (flat) fact for BSD/OSX.

The filesystems fact lists the mounted file system types.

The mountpoints fact is a new structured fact that describes the mounted file systems in detail.
(maint) Fix missing documentation in logging header.

Fixing missing documentation in logging header.
Adding a missing doc comment for a define.
Moving some BOOST constants into the .cc.
Fix /* to /** to properly treat the comments as doxygen comments.
(CFACT-58) Implement mountpoints and filesystems facts for Linux.

Implementing the mountpoints (structured) and filesystems (flat)
facts for Linux.

The filesystems fact lists the file system types supported by the
kernel.

The mountpoints fact is a new structured fact that describes the
mounted file systems in detail.
(CFACT-58) Implement the Linux partitions fact.

Implementing the partitions fact for Linux.

We also implement the following attributes for each partition:

* partuuid - The partition UUID (as opposed to the filesystem UUID).
* label - The partition's label.

This takes a new build-time dependency on libblkid (blkid was a
runtime dependency of Ruby Facter).
(CFACT-58) Make blkid and openssl dependencies optional.

This commit makes blkid and openssl an optional build-time dependency.

If blkid isn't installed at build time for Linux, the partitions fact will be unavailable.

If openssl isn't install at build time, the SSH fingerprinting facts will be unavailable.

The dependencies can also be disabled using "-DWITHOUT_OPENSSL=1" and "-DWITHOUT_BLKD=1"
when configuring cmake.
(maint) Fix build dependency finding to support CMake hint variables.

Adding back support for a <packagename>_ROOT CMake variable that
gives a hint to where dependencies can be located.

Also adding support for <packagename>_INCLUDEDIR for an include
directory hint and a <packagename>_LIBRARYDIR for a library
directory hint.
(maint) Add missing doc comment for time zone fact resolver.

Adding a missing doc comment for timezone_resolver.