Adds isDistributedLocked() for global semantics + some other tweaks

* Adding isDistributedLocked() for global semantics; if lock not held by current process then queries DB for lock status.
* Can now maintain distinct service instances for different service options.
* Setting background monitoring threads as daemons so they cannot prevent JVM shutdown.
* Overriding finalize as safety measure to ensure lock's cleaned up even if lock not explicitly destroyed before leaving scope.

Thanks Deft Labs!