Add Tags and clean up git data model

- Add Tag for lightweight tags and TagObject for annotated and signed
  tags.
- Remove all properties in data model in favor of direct attribute
  access (until properties are needed).
- Add "Attributes" section to class docstrings for all class fields and
  clean up docs to adhere to latest coding standards.