Only create the AsNode cdata when required

This speeds up parsing by ~5%.
Only create the AsNode attribute hash when required

This speeds up parsing by ~7.5%.
Do not split the cdata if there are no newlines

This optimization for the common case speeds up parsing by ~18%.
Remove some dead code which can never be triggered

This speeds up parsing by just 2%. It all adds up...
Do not use a GString when parsing cdata

This speeds up parsing by ~10%.
trivial: Add a simple speed test function
trivial: Add the single inclusion header guards in as-node.h
Speed up converting cdata to raw text

We can convert the string in-place as it's always going to be shorter.
This speeds up reading the sample data by ~1%
trivial: Tiny optimisation; use g_node_append_data()
Reduce the amount of string copying when parsing a GNode tree

By introducing as_node_take_data() we can take ownership of the string data,
and avoid an extra g_strdup/g_free for each tag processed.
This speeds up reading the sample data by ~5%.
trivial: Never use atoi()
Add as_node_from_file()
Add AsStore
trivial: Fix up two small memory leaks
Add a lot of Gtk-Doc markup and generate a valid GIR file
Define an enumerated type of AsAppUrlKind

This will allow us to add new enums in the future.
Allow releases to have a localized description

Additionally, only create the hash table of data if there is actual data.