pkg2 refactor into submodules: Types, Read, Query, Write.

Types – data types required by other modules with basic functionality
Read  – functions read the state of a .julia repo (read-only)
Query – purely functional methods to transform info about .julia repos
Write – transactional functions to update the state of a .julia repo

The top-level ties it all together and provides a nice, usable interface
that makes sure you're in the right directory, etc.
remove use of jl_show_any and jl_print_symbol builtins, closes #3112
add write(IOBuffer, Ptr, nb)
Added subtypes functions, updated help, docs

* Added isabstract(T), subtypes(T), subtypetree(T)
* Updated help(x::DataType) to print super, subtype info
* Doc fixes/updates.
Added undocumented(), undefined(), isdeprecated(); doc and export updates.

* undefined(m::Module): list the undefined methods in a module
* undocumented(), undocumented_by_file(), undocumented_rst(): produce a list of undocumented methods in various formats
* current_module(): return the current_module() (is this always Main?)
* isdeprecated(fn): true if fn is deprecated
* commented out undefined functions in exports.jl (these could probably be removed)
* documentation fixes (in manual) and update