Update .gitigore to exclude symlinked gpg binaries.
Add InheritablePropery class for mutable, inheritable descriptors.

 * This allows us to define immutable x.getter and x.setter methods in a
   parent class while still inheriting the ability to alter the descriptor in
   a child class without needing to set something like:
       @property
       def x(self):
           super(self.__class__, self)._get_x()
   as a property override for every descriptor.
Add MetaGPG and GPGBase for handling attribute/property setup.

 * These classes also play a few other tricks, like the steps taken to disable
   pinentry if GPG.use_agent=False:

       1) detect if gpg-agent is running for the same EUID as python,
          and if it is then
       2) find out if the user wants us to use it, and if they don't then
       3) find if pinentry is installed, and if it is then
       4) modify the system PATH to exclude the directory where pinentry is,
          symlinking out gpg if gpg was in the same directory, and then
       5) register an _exithandler with the interpreter to replace the
          original environment when the interpreter exits.
Add a a log formatter and a new log level for GnuPG internal status codes.
Minor and unnecessary obsessive compulsive code formatting change.
Add TODO file with ideas for future improvements.