Don't use the rpmdb to figure out upgrade target arch (#748119).

This will fail if /var is on a separate partition, since we do not have
the logic to mount additional partitions at this point.  Instead, just
run a chrooted /bin/arch which should always succeed.
Add our custom GTK+ widgets in as a subdirectory and subpackage.
Add the python portion of the new UI under pyanaconda/ui/.

Eventually, this will grow to contain a text UI and will ultimately replace
the old iw/ and textw/ directories.  We're a long, long way from that though.
Add in some hacks to make the new UI fire up from anaconda.

- The anaconda object always gets a ksdata.
- exitHandler should only take as arguments what it needs to do its job, and
  assume the presence of ksdata.
- Remove the set_steps calls in the default UI path.  There's likely to be a
  whole lot of crashes associated with taking other paths right now.
- Call the new UI at the end of anaconda in kind of a hackish manner.
- initInterface will only create the GUI right now, and will purposefully crash
  on anything else.

But hey aside from all of that, it actually fires up and works (for me).
Add gnome-icon-theme-symbolic as a requirement.

We're referencing those specifically in the new UI, after all.
Update the gdk check in configure.ac

gtk+-3.0 wants gdk-3.0, which means the check needs to change to that version
as well.
Add pygobject3 as a BuildRequires, since we need that to run make install.
Update to use more symbolic icons (mizmo).
Set the distribution property based on product info, and add the betanag dialog.
Remove the AnacondaGUI class, moving its contents to GraphicalUserInterface.

I don't know what I was thinking when I divided things up this way, but
AnacondaGUI was almost completely redundant and there's no need for yet more
layers here.  Everything AnacondaGUI did has been moved into the
GraphicalUserInterface class.
Define exactly which arguments Spokes, Hubs, andand UserInterfaces may count on.

For now, I'm just letting them get ksdata, devicetree, and instclass.  More
may need to be defined later (packaging backend and networking, perhaps) but
the idea is to keep this list small and to have them be explicit in what they
need.  Also, the anaconda object will never be a parameter.  Don't even ask.
showable is a property, not a function.
Add Makefile.ams for all the new UI code so it gets installed.
Change _findUIFile to look outside of the source tree, too.

With the Makefile.ams, we're installing glade files to /usr/share/anaconda
instead of into the python directory.  That was a bad idea to begin with.
Populate standalone windows right before showing them, not all up front.

This avoids a potentially very large wait between the time when anaconda starts
and the UI is first displayed.  Unfortunately, it means potentially regularly
large waits between screens.  Gotta do something about that.
ARCHIVE_DEFAULT_BYTES_PER_BLOCK no longer exists in libarchive-3.0.0
Remember to import needed stuff from pyanaconda.product.

This one snuck by me when merging branches involving files getting deleted, I
think.
Storage should not be interactive when building the device tree.

This patch has the following set backs (for now):

(1) All the inconsistent LVM, RAID, and uninitialized disk dialogs are gone.
    They will not be coming back in this format.  Instead, I am planning on
    prompting for this sort of information on an as-needed basis when disks
    are selected for installation during the storage spokes.

(2) DASDs will not be formatted, though the code remains behind to do so.  For
    now it's still taking an intf argument but it's always going to be None.
    Again, I'm planning on doing this as-needed.  I did not remove the format
    code because it looks like it will be useful.

(3) Encrypted devices will not be added to the device tree because we can't
    prompt for the key.  I'm not yet sure what to do about this, but it will
    likely take the shape of scanning these devices separately later should
    they ever need to be used.
Start storage probing in its own separate thread.

In this way, we have all the probing done in the background while the UI is
instantiated and displayed.  It's the intention that this process is complete
by the time the network spoke is displayed, though I currently have no way
to enforce that.

This code is likely to move and become significantly fancier in the future,
but it works in testing for now.

Additionally, a storage change is required.  We need to ensure that there is
only one DeviceTree object ever created and set as storage.devicetree.  If
not, the instance referenced in the UI code will not be the same as the one
that's been populated.  So, add a reset method that gets called from
storage.reset that does all the same stuff but keeps us in the same instance.
Don't assume that every hub has the same buttons when hooking up callbacks.