(maint) abstract location of patches and bash

Previously, location of bash was hardcoded. This patche moves it to a variable
`bash` so that it can be overridden in platforms where bash is not present by
default. This patch also adds OS specific patches and moves the solaris specific
gcc patch to an OS specific directory
(fix) solaris use simple cat instead of gnu find
(maint) define SHELL only in the platform specific makefiles.

Previously, the SHELL variable used to be exported from the global
makefile. However, the value (path) of SHELL can change in different
platforms. Hence its definition is moved to the platform makefiles.
(fix) copy md2.h to correct place

Previously, we had a patch for various openssl source files where
md2.h was included to point it to where md2.h is present originally.
however, after noticing that all other header files are under openssl
and not in their original path, it is better to copy the md2.h to the
correct location.
(update) Adding FreeBSD compilation

This patch adds FreeBSD release 10.0 support for cfacter-build. It compiles its
own gcc and boost since those available from ports is a different version.
(fix) Define platform facts for freebsd

This adds a patch to cfacter compilation that updates the cfacter
build with a collection for the FreeBSD platform. This patch can
be removed once the patch is integrated into the cfacter project.
(fix) fix broken freebsd tostring

Apparently FreeBSD is also affected by std::to_string not implemented in g++.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52015
http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20140609/107686.html

This update adds a patch to the build so that freebsd build can go through. It
should be removed once a better alternative is found.