Initial implementation of logging

Functional components include:
- Creation of log files (initialization of directories, files and XML pre-amble).
- XML serialization of log entries.
- Log entries pushed to screen (limited formatting)
- Threaded serialization.
- Client interface which implaments thread safe, stream usage.

Please see wiki for more information
(this is not github wiki, active wiki is currently private).
MODIFIED: <Breaking Change> stanard logging interface (inglenook::iout) renamed to ilog.
FIXES: this patch addresses the scheduling mechanism used by the log writer based on peer review.
  Previous version used yeilds to ensure threads were given sufficient time to serialize. This does
  not sit well with the CPU usage or resource footprint of the software.
     - Serialization loop now sleeps to 250ms (0.25secs) between checks, when the queue is empty.
     - Serialization loop is now woken, from previously described sleep, by add_entry() if the
       queue was empty prior, this lets the serializer know it has work to do, and prevents a
       potential 250ms delay on recognising that the queue is no longer empty. We still use the
       250ms sleep to
         a) hopefully, act as fallback if the mechanism breaks for any reason.
         b) ensure items that might not implement the notification mechanism do not get ignored.
         c) process the shutdown flag (which still uses old periodic check method).
       We could potentially eliminate the need for the wait entirely if we really wanted.
     - Serialization thread now provides announcements of queue space availability.
     - Workers unable to schedule their log entries no longer yield, and retry 10k times. When the
       log cannot be scheduled, the worker will wait on a space availability announcement from the
       serialization thread (or 250ms, as fallback) before retrying. It will now only try 10 times.
FIXED: Dusted away some magic number from the new notificaiton mechanisms.
Inglenook logging; now with added standards!
ADDED: modified structure of log files a little. added a <process-id> element to idenitfy process when not in a folder, and re-grouped <log-entry> items under a <log-entries> element.
ADDED: XSD link to emmited XML log files.
ADDED: XSD specification for log files. As XSD's have to be hosted, this is for reference and version control only.
ADDED: Example to the logging sample project on how to use extended data.
MODIFIED: log_writer::create() now creates files yyyymmdd-hhmmss-pid.xml rather than pid-yyyymmdd-hhmmss.xml
REMOVED: log_buffer, useful class which duplicated a lot of effort for no gain. replaced with log_entry_buffered.
ADDED: log_entry_buffered, a derived version of log_entry which adds stream support.
MODIFIED: log_client has been modified to use new log_entry_buffered. no longer need intermediate object between buffer and serializer.
ADDED: pre-compiler flag INGLENOOK_LOG_FILE which can be added before #include "logging.h" to determine which file to log out to.
MODIFIED: log_writer now has a global default namespace and entry_type property.
MODIFIED: log_client now has a thread specific default namespace and entry_type property (these fall back to the global if not set).
ADDED: filter to xml and console output to limit what is shown in output.
Cleaned up a few todo's.
ADDED: two simple classes ns() and log_data() to allow all aspects of a log to be set by stream.
MODIFIED: changed ilog declaration away from deprecated declaration method.
ADDED: tests starting point (no actual tests, waiting on cmake)
Merge remote branch 'origin/master' into logging
- Core library incoming in origin/master merged with logging branch.
- Logging branch re-organised to adhere to new file structure layout.
Added logging to the CMAKE build system.
Several changes, fixes, and enhancements:
MERGE: pulled master which now contains initial versions of core, locate, settings and directories.
MODIFIED: directory structure and naming to conform to cmake system
             logging library moved to ./src/lib/ign_logging
             example code to ./src/examples/lib/ign_logging
MODIFIED: Sample code from one main.cpp I was using for testing to a proper tutorial-esqe file (01-basic.cpp) and a threading test/demo(02-threading.cpp).
MODIFIED: all code made to build with new cmake system.
MODIFIED: cmake system to accept -DWITH_EXAMPLES=[ON|OFF] switch (ON by default) which will indicate whether the examples directory should build or not.
MODIFIED: setup-builds.sh to pass arguments though to cmake (so I can actually use my -DWITH_EXAMPLES switch)
              - don't move the insertion point for arguments else you might bork the build system (if you override the build type).
MODIFIED: log_writer to use core's implamentation of pid and process name lookup methods.
FIXED: use of std::manipulators broke log_client (such as std::endl, std::end, etc), a new overload has been provided to handle this.
Bad previous checkin (forgot -a, my bad), in addition to previous:
MODIFIED: now uses ign_directories to source log directory
ADDED: tests for log_entry
ADDED: tests for log_entry_buffered
ADDED: tests for log_entry_modifiers
NOTE: test file for log_client is currently empty
FIXED: bug in log_entry_buffered identified by new test scripts where by calling message(str) and then using << operator on message_buffer() resulted in unexpected behaviour
ADDED: tests for log_writer.
ADDED: tests for log_client.
ADDED: flags to supress emmision of xml header and/or footer in log_writer startup / shutdown.
REFACTORED: moved methods that determines the log path (when not provided) to make testing possible. its better there anyhows.
REFACTORED: moved serialization checks to the serialization loops (rather than in the serialization methods). ensures behaviour is more predictable.
ADDED: methods to reset the default namespace and entry type at log_client scope.
ADDED: property to allow external access to the log_entry buffer in log_client. this shouldn't be a problem, could be useful and helps testing.
FIXED: issue with writing a char to the log_client.
MODIFIED: xml header to use real version numbers (logging library hard-coded to v1 for now)
MODIFIED: tests borked because XML header changed, updated to new headers.
TAGGING: revision tagging as "v1.0.0000", version ready for peer-review for inclusion with main-line.
UPDATED: modified basic logging example (examples/lib/ign_logging/01-basic.cpp) to correct typos, factual faults and for clarity.
UPDATED: modified threaded logging example (examples/lib/ign_logging/02-threading.cpp) to correct bad comments (old code references).