gtk-demo: Add CSS demos

Add a couple of demos demostrating the use of CSS, the css files are
stored into a GResource binary file compiled with glib-compile-resources,
the comments in gtk-demo.py explain the usage of GResource.

Signed-off-by: Simon Feltman <sfeltman@src.gnome.org>

https://bugzilla.gnome.org/show_bug.cgi?id=719722
gtk-demo: Add info bar and better error handling to CSS demos

Use an info bar for displaying CSS parsing errors. Store the last good
stylesheet text for use as a backup when a parsing error occures. This gives
a seamless look while typing changes into the text editor.

https://bugzilla.gnome.org/show_bug.cgi?id=719722
gtk-demo: Avoid crash in CSS demos

Avoid a potential crash in the CSS demos where the text editing buffer is
out of sync with the last good CSS parsing buffer. In the case of CSS
warnings, we get a parsing-error callback but no exception is raised.
This would cause the buffers to become out of sync and accessing position
information from the parsing-error section would crash the text editor due
to an out of range iterator being created.
docs: Skip implicit array length args when building function doc strings

https://bugzilla.gnome.org/show_bug.cgi?id=697356
docs: Move GIArgInfo.get_pytype_hint into gi.docstring

Move the C implementation of pytype hinting into pure Python. Now that
doc strings are lazily evaluated we can simplify this tedious bit of C
code with Python. This is precursory work for getting return types into
function doc strings.

https://bugzilla.gnome.org/show_bug.cgi?id=697356
docs: Replace usage of functools.wraps with a custom version

Using functools.wraps in overrides would cause docstring evaluation which
can hurt performance during overrides loading. Add custom wraps decorator
which only copies __name__ and __module__ attributes. Remove function
wrapping used within gi.overrides.overridefunc because the wrapping was not
doing anything, this preserves __doc__ ability without causing an eval at
load time.

https://bugzilla.gnome.org/show_bug.cgi?id=697356
docs: Add return values and skip implicit out arguments in functions

Add gi.CallableInfo.skip_return static binding for testing if the return
value should show up in docs. Skip implicit list index arguments for out
values.

https://bugzilla.gnome.org/show_bug.cgi?id=697356
docs: Cleanup PyGIBaseInfo repr

Remove angle brackets and pointer address from PyGIBaseInfo.__repr__. This
cleans up documentation and makes it easier to read.
docs: List constructors in object and struct doc strings

Add type dispatching to gi.docstring documentation generator for info types
of StructInfo and ObjectInfo. Add lazy doc string generation to
Object and Struct meta classes by using a property for __doc__. This lists
available constructors immediately in all GObject.Object and Struct docs.
ipython example:

>>> Gtk.Button?
:Constructors:
    Button(**properties)
    new()
    new_from_icon_name(icon_name:str, size:int)
    new_from_stock(stock_id:str)
    new_with_label(label:str)
    new_with_mnemonic(label:str)

https://bugzilla.gnome.org/show_bug.cgi?id=708060
docs: List default constructor in doc strings

Add default constructor to class docs strings as:
Object(**properties)

https://bugzilla.gnome.org/show_bug.cgi?id=708060
Cleanup disguised struct constructor error and add it to boxed

Give a cleaner error message when an attempt is made to create a disguised
struct which also gives a hint to look at the pydoc. Add similar error to
disguised boxed/unions.

https://bugzilla.gnome.org/show_bug.cgi?id=647249
docs: Skip display of default constructor for disguised structs

Structs which have zero length should now show a default constructor.
Structs with a length should not show keyword arguments in the default
constructor.

https://bugzilla.gnome.org/show_bug.cgi?id=708060