(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-81) Fix LSB major/minor release resolutions in Ubuntu

Prior to this commit, the LSB release facts were not correctly
parsing Ubuntu's release string to collect its major and minor
versions. This commit updates the LSB facts such that a release
string of '14.04.1' will return a major release of '14.04' and
a minor release of '04', if a minor version is specified.
(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.
Merge pull request #93 from whopper/release_fix_ubuntu

(CFACT-81) Fix LSB major/minor release resolutions in Ubuntu
Merge pull request #94 from vrthra/fix/cfact-68/solaris

(CFACT-68) enable solaris compilation
(CFACT-59) Add id and gid facts
Merge pull request #95 from adrienthebo/issue/master/cfact-59-id-gid-facts

(CFACT-59) Add id and gid facts
(CFACT-57) Add facterversion fact
Merge pull request #99 from adrienthebo/issue/master/cfact-57-facterversion-fact

(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
Merge pull request #98 from adrienthebo/issue/master/cfact-62-timezone

(CFACT-62) Add timezone fact
Merge pull request #96 from vrthra/fix/cfact-70/solaris-kernelfacts

(CFACT-70) add solaris kernelfacts from uname
(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.