added a generic singleton class and associated tests so we can stop building our own every time we need one.