Rewrite my menu preferences to avoid ProjectState caching

Storing individual user menus inside of the All-Users project state
object leads to unconstrained server memory growth. As users load
preferences the ProjctState object retains all of their preferences.
The cache is only cleared when refs/meta/config within All-Users is
modified, which is very infrequent.

Instead of abusing the ProjectLevelConfig for user preferences,
build a new type VersionedAccountPreferences from the base helper
VersionedMetaData. Load and store all preferences dynamically from
Git. This is similar to the model change metadata will use in the
future, so flushing out any performance problems now with simpler
models like the user preference store is valuable.

User preferences are not accessed very frequently; only at initial
tab load and if the user modifies their settings. If there are any
current performance problems with this storage model the current
impact will be slight while the issue is worked on.

Change-Id: I74c1aed4119b48557e954cc602eb1cf178d201bb
8 files changed