Add preliminary package selection (w/ dependencies)

* The user can select (and unselect) packages.
* Selecting a package selects other packages it depends upon.
* Dependencies cannot be unselected.
  - This could change, but only with a warning to the user that
    other packages would have to be unselected as well.
* An automatically selected dependency package is unselected when
  all of the requiring packages are unselected.
  - Since dependency lists are relatively small, simply search this
    list rather than keeping a count of currently requiring packages;
    this leads to much less tracking and data initialization.
* A user-selected package which is also a dependency should not be
  unselected if a requiring package is unselected.
* Requires/depends relationships must be established after all
  package data is available.
  - Since depends/select data is available immediately, store this
    as keys.
  - Determine required-by packages in a global initialization
    function, called at a time when all requirement data and a place
    to store said data is available.