Refactor GitHub types

This change refactors the existing GitHub types.  These types are much
simpler now and are woven with an aspect that notices if they have not
yet been initialized.  If they have not yet been initialized, the
aspect makes a GET call to get the proper content and calls an
initializer method on the type.  From there, all subsequent calls use
this same data and do not require another HTTP call.  The instance
graph contained within these types is scoped to the session so a
logout/login cycle will initialize new data.

[#54504000]
Incremental commit. Please do not base any external work off of this commit.