ListView: prevent negative SizeAllocation calls from parent container

Apparently, GTK2 is much more protected (or GTK3 is more "liberal") in
regards to invalid or weird combinations of GtkAdjustment values, as these
didn't generate any rendering issues before. In GTK3 however, these values
could cause the parent container to be confused and to send calls to
gtk_widget_size_allocate[1] with negative coordinates.

There were a lot of edge cases which were fixed in this commit:
- hadjustment.Upper values becoming negative (fixed by preventing negative
values in list_rendering_alloc.Width|Height).
- PageSize and PageIncrement having positive values when Upper and Lower
were zero.
- vadjustment.Upper being higher than zero, but lower than
vadjustment.PageSize.
- vadjustment.Value becoming negative if there were not enough items in the
listview to fill a whole page (the case when there is no need for
scrollsbars).

The last of the edge cases was actually highlighted to me thanks to a
(presumably) accidental change that Bertrand Lorentz did in the way the
hyena demo ("make hg") is rendered. I reverted this change here [2], but
now I'm reinstating it in the form of two kinds of listviews for the demo:
one which initially shows scrollbars and one that doesn't.

This commit pretty much fixes the majority of annoyances and poltergeists
I was seeing with the UI when running Banshee with its gtk3 branch of it
and the gtk3 branch of hyena. Let's cross fingers to hope it doesn't appear
again (but if it does, now we at least have some Log.Error() calls that I
added in OnSizeAllocated() to warn us).

I also added a nifty Dump() extension method for GtkAdjustment that is very
handy when debugging these puppies.

[1] https://developer.gnome.org/gtk3/stable/GtkWidget.html#gtk-widget-size-allocate
[2] https://git.gnome.org/browse/hyena/commit/?h=gtk3&id=fe543a612804c37ba63e65bec813fa3ad3cf5658