Support ETag caching

Need to document it.
Change cache sha1 when -O

-O gets back pretty-printed output so use different cache.
Refactor test layout
set GIT_HUB_CACHE in test maker
finish fixing test maker
Add test case for -O and pretty-print
add blank lines
Add a no-cache option to deal with stale etags.
Add a cache clearing plugin and explain caching better