[WIP] Improve package management experience

- [ ] Ensure network access not needed in specs
- [x] test with a few themes
- [x] check on linux
- [x] test with an empty cache and no network access
- [x] command panel commands
- [x] update specs
- [x] check on windows
- [x] remove TODO items from code
- [x] invalidate duplicate cache items (but always keep one around even if expired for unreachable network situations)
- [x] cache featured packages/themes
- [x] list installed packages with `apm` when this lands: https://github.com/atom/apm/pull/216
- [x] add featured themes to install pane
- [x] Themes can't be disabled, don't show those buttons in AVP
- [x] Core themes do not appear
- [x] Needs better in-progress/downloading state after a package is installed
- [x] After installing a package, not all the buttons are revealed.
- [x] Investigate package discovery & installation
- [x] Handle themes as well
- [x] Fetch & cache data from atom.io
- [x] style polish
- [x] Core package avatars not fetched (repo field issue perhaps)

Nice to haves / can get in separate PRs
- [x] install pane responsive improvements / cc @simurai 
- [ ] Available update count shown in Updates left panel menu item
- [x] `AtomIoClient` singleton to prevent cache madness

This branch is an exploration of one way to make some things better about the package management experience. It's very hacky/WIP, and was an excuse to get back into package development so don't look here for top end code examples... yet.

Here are some frustrations I have with settings-view:

- Packages are listed in a small part of the sidebar, and it's hard to scan through them
- User installed packages, core packages and dev packages are all listed together
- All interesting package actions (uninstall, enable/disable, informational tasks) are only available from the full settings pane
- Interesting metadata that can help a user assess a package's quality and maturity is not always easily available

Here are some ways this branch addresses (or will address) these issues:

- give the concept of managing packages & themes its own set of panes, and keep it separate from new package discovery, search, and installation
- Show packages in lists with action buttons and metadata similar to the package cards at https://atom.io/packages/list
- group packages by installed, core, dev and provide counts when filtering
- provide an api and avatar cache so that we can show metadata from the API without ruining the offline experience

![settings-view-480](https://cloud.githubusercontent.com/assets/1476/5151055/0206b02a-718e-11e4-81b3-c72a88720678.gif)

The current state of this branch is rough ([and depends on an unfinished PR in apm](https://github.com/atom/apm/pull/216))- I chose to sketch in code rather than approach the UX more formally. I think that whether this code gets merged or not the process & discussion could help us get the settings view right.

Along those lines I want to hear what folks think about this - of course anyone watching this repo, but let me specifically call out @simurai and @atom/core for comments on the direction.