Refs #11: define gu::BaseUUID in gu module and derive gcomm::UUID from it.
the reason why I define gu::BaseUUID instead of gu::UUID is because almost all files in gcomm import namespace gu and gcomm both. so UUID is ambiguous.
so to make compilation pass needs to change UUID to gcomm::UUID for all these files, which takes too much efforts.