(ocaml, piqi server) Fix parsing empty Piq input in frameless mode

Empty input was erroneously throwing Piq.EOF exception.
Add a new .piq-alias property for field and options

This allows to specify an alternative name a field or an option; used only when
parsing Piq; Field names specified via .name or derived from .type take
precedence over names defined using .piq-alias

The ability to use an alternative name is useful when Piq is used as as a
syntax notation for DSLs.
Merge pull request #41 from amplidata/missing_cli

(ocaml) Added --gen-preserve-unknown-fields to list of accepted CLI options
Code and interface refactoring
Add basic validation of the .piq-alias field and option property
Minimize dependency of piqi on piqi-ocaml and vice a versa

This is done in preparation fo moving piqi-ocaml into a separate repo.
Improve build scripts

- automatically build piqilib when building piqi
- automatically re-build piqi on piqilib changes
Add support for a record-level .piq-positional setting

When specified, it applies to all record fields unless overridden by a per-field
setting.
Check for infinite types
Move some code between piqilib and piqic-ocaml

Remove piqilib/piqi_graph.ml and add its functionality to piqic-ocaml as it was
the only caller of the Piqi_graph functions.
Fix tests

tests/piqi_compile was failing after recent changes
Remove link checking step from CI build

The test is flaky -- failing in 50% builds for some reason. Removing it until we
figure out how to make it reliable.
Fix: enable Piq-speicfic checks back as well as record-level .piq-positional

This code was accidentally disabled by using a wrong linking order which led to
excluding the piq.ml module's functionality.
More robust handling of "convert --piq-frameless-input"

This option is not applicable to scalar types so we need to process them
slightly differently than container types.
piqi server: handle exceptions more accurately

exceptions

  internal error: error while running function "convert": Piqi_convert.EOF
  internal error: error while running function "convert": Piqi_piqirun.Error(-1,
  "missing field: 1")

are now reported as proper piqi-rpc errors: missing_input and invalid_input
respectively
Merge remote-tracking branch 'upstream/master'