Encodings refactoring

Treat "piqi" entries in wire encoding as regular typed entries. They don't have
to be treated specially with a pre-allocated code.
Encodings refactoring

piq: deprecate old ":piqtype typename" default type specification in favour of
the new (:typename) form
(piqi) Rename piqi convert|check|getopt's --piqtype to --type
Encodings refactoring

Rename experimental "wire" encoding to "pib".
Internal renaming

Rename piqobj_of_wire.ml to piqobj_to_protobuf.ml; same for piqiobj_to_wire.ml
and piqi_wire.ml
Revise encodings

- remove support for an experimental "piq-json" encoding; provide similar
  functionality as a part of the standard "json":
- include type names inside the top-level objects: e.g.
  {"piqi_type": "foo", "value": 1}
- wrap lists into top-level objects, so that we could add "piqi_type" property
  to them: {"piqi_type": "foo-list", "value": [...]}
- {"piqi_type": "piqi", ...} corresponds to an embedded Piqi specification
Encodings refactoring

- always use <value> as a top-level XML element
- some cosmetic changes
Encodings refactoring

More accurate and safe handling of "piqi_type" top-level property for language
serialization purposes. Basically, it is a) ignored during parsing without
giving an "unknown_field" warning; b) does not get generated during
serialization (we may provide an option to generate it some time later).
(piqi) Add a new "piqi convert --gen-extended-piqi-any" flag

This flag affects piqi-any values represented in JSON and XML formats. When
specified, an extended version of piqi-any representation is used in the
conversion result. In addition to the original JSON or XML value, it includes
Piqi type name (if known), Protobuf representation (if known or can be derived),
and a special marker indicating that this is an extended piqi-any
representation.

For example, this flag changes relavent portion of
"piqi convert -t json piqi.piqi" output from

   "default": "required",

to

   "default": {
      "piqi_type": "piqi-any",
      "type": "piqi/field-mode",
      "protobuf": "CN+iipMB",
      "json": "required"
    },

This feature is necessary for future Piqi compilers implemented in various
languages that take portable JSON or XML .piqi representation as input.
(piqi) Initial implementtion of "piqi compile" and "piqi cc"
(piqi) Add a new "piqi compile --normalize-names" flag

When specified, convert typedef, field, option, typename and function into
lowercase with words separated by dashes.

For example "CamelCase" will become "camel-case".

Already lowercased names will remain intact.
(piqi) Add reversibility for extended piqi-any in JSON and XML

With this change, piqi-any values converted with --gen-extended-piqi-any to JSON
and XML can be loaded back to internal representation.
Upgrade xmlm third-party library to the latest upstream version (1.1.1)
(piqi) Add support for representing untyped json and xml fields in .piq format

In addition, lots of internal improvements:

- in the way how verbatim text is formatted by the pretty-printer
- rename the "control" piq AST element to "form" and changed its structure to
  better reflect the purpose
(piqi) Add the ability to read untyped json and xml fields back from .piq
(piqi) Add support for untyped JSON and XML piqi-any values in Protobuf
(piqi) Fix a problem with conversion of piqi-any values

The problem was introduced in one of the previous commits related to "piqi
compile".
(piqi) Internal improvements in Piq AST handling by parser and printer
(piqi) Rename piqi-bundle to piqi-list plus some internal improvements
Encodings refactoring

Another iteration on the experimental "pib" encoding. It is a lot more
straightforward and better defined now.