Implement GUID using boost's implementation

Since we're maintaining a C api, the implementation is sometimes less than
intuitive from either a C or C++ perspective. I am trying to use as much
boost as possible while making all the guarantees that the C code makes.

One function was declared deprecated because it "wasn't thread safe". This
was straightforward to repair, and is no longer marked deprecated, and there
are now two ways to convert GUID to String: passing your own character
buffer, and having one returned to you that you need to free.
Rename guid_new to guid_replace

`new` implies some allocation. Since guid_new was actually constructing
a guid in place rather than allocating it, it makes much more sense to
call it guid_replace (or guid_construct). We went with guid_replace.
Cleared up GUID construction and allocation

To allocate a GUID, use guid_malloc. To allocate and construct a guid
(which is actually unique), use guid_new (and be sure to free it using
guid_free).
Corrected uses of guid_to_string.

Previously, guid_to_string had been marked deprecated with a note about
it not being thread-safe. It was much worse than "not thread safe", it
was only safe in a particular situation, and its safety was being violated
throughout the code. It was clear that users of guid_to_string did not
understand what it was purporting to do because of its varied uses. Most
uses simply treated it like a Garbage-Collected Java String (use and forget).
I actually found at least one instance where the string was being freed. (!!!)

I made the method have a particular easy-to-understand semantic: it returns
a pointer to a string which must be freed by the caller. I then tried to
track down all uses of this function and correct them. Mostly, I just changed
the usage to guid_to_string_buff with a stack-allocated string to avoid the
the malloc/free cycle.
Remove guid_init and guid_shutdown

They no longer do anything, and it's not probable that they ever will.
Removed the md5 file and updated the build system.

We no longer need md5.h or md5.c because all that work is done in the boost
uuid implementation.
Cleaned up some code and comments.

There should be no impacting changes in this commit.
Simplified some of the GUID code.

This change applies some recommendations from jralls. It better utilizes for loops,
and usage of swap. We also try to make sure the null guid is not freed since it's
reused, and catch a c++ exception to make sure it doens't escape into C code when
parsing a GUID.
Added new tests.

Added tests for string_to_guid and guid_replace.
Replace built-in md5 hashing with GChecksum

Prepare for removing it when we replace the GncGUID implementation with Boost.
Add gnc-date.cpp to POTFILES.in

Because make check complained. Dunno what changed...
Merge branch 'guidcpp' of https://github.com/limitedAtonement/gnucash

into guidcpp
Two minor tweaks to pass make check.
Bill invoice importer crashing when invoice has multiple lines.

Move the final g_free(s) outside the while loop.
Bug 734183 - Set all of the denominators correctly on the currency values.
Fix broken test-backend-dbi with libdbi 0.9.

Segfaulted for an uninitialized dbi_instance.
Revert "Fix broken test-backend-dbi with libdbi 0.9."

This reverts commit 321a159af29a9b51fe793c2528dccb74b0443bf9.
Got two unrelated changes into a single changeset.
Add note about automake 1.14 to configure.ac

The note has the details, but I wasn't able to get gnucash to build with
automake 1.14 without passing --disable-dependency-tracking regardless of
whether I used the subdir-objects option. If I could figure out a good way
to poison configure with automake 1.14 I would.
Fix uninitialized variable warning.
Fix test-backend-dbi segfault with libdbi-0.9.0.

dbi_inst must be initialized before it can be used.