Split Commit into base and variants, added Author.

This is the initial idea behind have a central base Commit type and variants
depending on the use case in order to keep handle the different formats
commits are represented by in the API.

Also added an Author struct to make a distinction between GitHub users and
repository contributors. It is included in commits since it is only necessary
with commits to my knowledge.