Extend ValueNode API.

- Add several new optional hook functions to ValueNode. These
  allow implementing subclasses to specify that they're a container
  type that can export a range of items (i.e. arrays, lists, etc.),
  and expose several operations on said ranges of child items.
Implement ranged container hooks in ArrayValueNode.
Some refactoring of Settings classes.

- Rename the current RangeSetting -> BoundedSetting and add an
  appropriate setting type enum, since that one actually describes
  a single value clamped to a range, rather than an actual range.

- Add RangeSetting class that has both a lower/upper bound and a pair
  of values representing the lower and upper ends of the range currently
  selected.
Use BNetworkDevice to get the current associated wireless network.
Use BNetworkDevice instead of using the driver settings api to get the
associated wireless network.
Also got rid of Settings::_PrepareRequest(), since it's no longer needed.