[Persistence] Use database timestamp
[Persistence] Nullify lastModified before update

Set lastModified to null before persisting,
but specify that it is not nullable (such
that CURRENT_TIMESTAMP is used instead.)
This ensures that lastModified always uses
the database's version of the current time
and always records this at the time the
object is updated. Object polling also
uses CURRENT_TIMESTAMP from DB, so if this
is not updated or recorded from different
clocks then component updates may be missed,
resulting in nasa/mct#110 and nasa/mct#134.
[Persistence] Evict cached children on update from database

Referenced component (or, more specifically,
ComponentSpec object) collections are stored
in the L2 cache as of #48; this caching is
useful in reducing latency related to repeated
loading of referenced components, particularly
where the database is accessed over a network.
However, the L2 cache is not refreshed by
changes to the parent ComponentSpec, causing
child references to fall out of date, which
results in nasa/mct#134 and some cases of
nasa/mct#110.

This fixes the issue by evicting these
collections explicitly for any components
which are updated from the database. This
allows unchanged components to continue to
use the cache, retaining the performance
benefits when viewing objects.

The explicit references to Hibernate involved
introduce a dependency which may not be
necessary; this is addressed by followup
issue nasa/mct#212.
[Persistence] Specify last modified (derby compatibility)

Apache Derby does not support
ON UPDATE CURRENT_TIMESTAMP, which is used
in prior commits to match modified time to
that read from database. As an alternative,
use time read from database during polling
to estimate the current database time when
persisting components (adjusting for the
local time elapsed since the database time
was last read.)
[Persistence] Poll broader range of time stamps

Look back one extra polling interval when
checking for updated last-modified times.
These are estimated by the client and may
not reflect precise database CURRENT_TIME
at the time of commit, whereas polling
does use precise CURRENT_TIME. This may
result in redundant updates but should
avoid missed updates, except in cases of
extreme latency.
[Persistence] Update lastModified when deleting

When deleting components, update the last
modified field of parent components at
the time that the reference is removed.
[Persistence] Check for null on last modified

Check time is null when updating last modified time
on component delete. This is primarily a concern for
unit tests where current time from database may not be
available.
Merge pull request #214 from VWoeltjen/mct110

[Persistence] Address issues with component refresh