IO::Datastore: added doc note about NULL_ID within the datastore.
Log: added inline specifier to freestanding funcs; doc tidy.¹

1: Duh. Multiple definitions.
IO::PropStateStore: corrected is_supplied() and behavior.

IO::PropState: renamed not_supplied to unsupplied (again) and made it
a standalone bit.

IO::PropStateStore:
	corrected is_supplied() (it was the inverse) and its use;
	made IO::PropState::unsupplied imply original within the store;
	removed has_exact();
	added all_data_initialized();
	updated test.
Added IO::StorageState::placeholder_identified and replaced Object::Unit::is_identified() with is_null().

IO::StorageState: added placeholder_identified.

Object::Unit:
	replaced is_identified() with is_null();
	added test for placeholder_identified in get_storage_state();
	moved get_storage_state().
Object: added alias UPtr to cc_unique_ptr<Object::Unit>.
:IO::PropStream: made release() nullify stream before releasing.¹

IO::PropStream: added doc warning for non-virtual dtor.

1: This allows a double-release to ensure the prop stream is
invalidated if release() throws.
Object/Ops: corrected parenting ops for Unit::is_null(); juggled docs.
Object/Ops: added printers for objects and IDs.
System: tied Context to hive & datastore, tidied Driver interface.

System::Driver:
	made hive_datastore_pair_type a struct, renamed to datastore_hive_pair;
	made placehold_hive() return ref to datastore_hive_pair;
	generate ID lastly in placehold_hive().

System::Context:
	added datastore and hive ref fields, replacing get_hive_pair();¹
	added warning for context-datastore-hive lifetime attachment.

1: To reduce runtime cost of access -- these will be used often.
test: added object test group and object/print test.
IO/Ops: added load_prop(), store_prop(), and identify_all().