Good: got rid of increment; made Good header-only

The increment code was a nice idea, but would have been a pain in the
ass to implement: better just to have Good::Discrete implicitly mean
"increment = 1" by convention.

Since increment was the only not-entirely-trivial bit of Good.cpp, got
rid of it so that Good.hpp is header-only.
Added explicit move and copy constructors
Made Member::Lock implement Lockable concept

Basically this required renaming release() to unlock() and adding a
try_lock().  The latter also carries with it new try options for read()
and write() (and _mutex_lock()), which now all return a bool to indicate
whether the lock succeeded (which, of course, is always true when
the try parameter is false, which is the default).