Fix bug with TypeError: 'str' does not support the buffer interface

Bug occurred when behind a corporate proxy,
confirmed on Windows XP, Windows 7, OS X 1.8.2

Credit goes to @holjan for the code
Added basic checking for channels and repositories to make sure the JSON looks somewhat reasonable
Fixed sleepy-coding mistakes with Channel and Package providers
Fixed premature access to cached channel info
Initial support for installing a package as a .sublime-package file
Fixed detection of already installed packages
Fixed duplicate code that was trying to remove the same package file twice
Added check to handle situations where there is no package folder to remove
Changed the way that package_io looks for files, first checking the package folder, then the package file
Merged pull request #331 - exclude the "User" package from the list and remove operations
Removed the strict parameter from HTTP classes since Python 3.2 deprecated it, and PC never uses it
Merged pull request #324 - fixed HTTPS proxy code to write and read bytes for Python 3
Fixed a bug with trying to filter dirs when repackaging a package during the install process in ST3
Added some code to make sure the zipfile is closed during the install process to prevent exceptions trying to clean up the tmp dir on Windows
Added checks to ensure that channels and repositories are served over HTTP
Fixed a bug comparing four+ dotted version numbers (e.g. 1.6.9.0) with a semver version
Removed verbose version comparison console messaging
Fixed str+bytes bug with saving a new CA cert in ST3
Simplified saving new CA cert since Python 2.6 can handle b"" str syntax
Changed CA certs to now be stored on disk in the User package so that Package Control can be installed as a .sublime-package file on ST3