ListAdapter now takes a ListProperty as data arg.

Using the same method used for controllers as input arguments for data,
a tuple can now be set as follows:

    ListAdapter(data=(owner, 'list property name'), ...

in the __init__ of ListAdapter, as for controller handling, first a swap
is done to set kwargs['data'], then after the call to super(), a binding
is set from the owner and list property to the adapter's data.settter.
This tidies up the API a bit, so that it is not necessary to set the
binding after the adapter was instantiated, and it makes for a clear
expression.

A new list cascade example, list_cascade_properties.py, was added. This
makes use of several alias properties and bindings to the list adapters
used. It also uses a Control class as a container for what constitutes
the "controller layer" in the app.

This brings us a step closer to redoing the ListView API with default
use of such syntax, and the plumbing underneath, where the adapter can
be hidden by default. For example, consider:

    ListView(data=(app, 'fruits'), ...

which would be passed down to the internal adapter. app here could be
replaced with self or any other container of the fruits ListProperty.

And, using the same approach, following the lead of SproutCore, we can
easily do:

    ListView(data=(app, 'fruits'),
             selection=(app, 'current_fruits'), ...

where current_fruits is an AliasProperty instance updated from the fruit
category selection (using the same data in the list examples).

NOTE: In this scenario, adapters would still be in the "advanced" API
      for ListView.

NOTE: For this commit and for the previous one involving controllers, no
      work has yet been done to DictAdapter.