processor independent logging steps: px:message/px:error/px:assert

All steps takes a "message" option and nine optional `param[1-9]` options.
`$1, $2, ..., $9` in the message value will be replaced with the values
in their corresponding param option. For instance:

```xml
<px:message message="The current XProc processor is: $1">
    <p:with-option name="param1" select="p:system-property('p:product-name')"/>
</px:message>
```

The above code will output `[INFO] The current XProc processor is: XML Calabash`.

The `px:message` step has a `severity` option that can be either
WARN, INFO or DEBUG. The default is INFO. There is no ERROR level as
that is what px:error is meant for.

The `px:error` step has the `code`, `code-prefix` and `code-namespace` options.
These are equivalent to the ones used for the standard `p:error` step, except
that the namespace has to be specified explicitly when a prefix is used; it
cannot be inferred from the calling pipeline. For instance:

```xml
<px:error message="It is an error to do whatever" code="err:PCU00" code-namespace="http://www.w3.org/ns/xproc-error"/>
```

(As with `p:error`, a un-prefixed code with no namespace can be used as well)

The `px:assert` step has the `test` option which must be `true` or `false`.
It also takes the optional options `error-code`, `error-code-prefix`
and `error-code-namespace` which are provided to `px:error` if the value of
`test` is `false`. If no error code is provided, a warning is displayed using
`px:message` instead. For instance:

```xml
<px:assert message="The fileset must not contain any absolute URIs: $1 (and $2 more)" error-code="err:PEX01" error-code-namespace="http://www.w3.org/ns/xproc-error">
    <p:with-option name="test" select="count(//d:file[matches(@href,'^\w+:')]=0"/>
    <p:with-option name="param1" select="(//d:file[matches(@href,'^\w+:')])[1]"/>
    <p:with-option name="param2" select="count(//d:file[matches(@href,'^\w+:')]-1"/>
</px:assert>
```

`px:message` and `px:assert` (unless an error is thrown) works like a `p:identity`
step in that they output the same as they get in.

The steps are used by importing `http://www.daisy.org/pipeline/modules/common-utils/logging-library.xpl`

These are the step signatures:

```xml
<p:declare-step type="px:message" ...>
    <p:input port="source" primary="true" sequence="true"/>
    <p:output port="result" sequence="true"/>
    <p:option name="severity" select="'INFO'"/>
    <p:option name="message" required="true"/>
    <p:option name="param1" select="''"/>
    <p:option name="param2" select="''"/>
    <p:option name="param3" select="''"/>
    <p:option name="param4" select="''"/>
    <p:option name="param5" select="''"/>
    <p:option name="param6" select="''"/>
    <p:option name="param7" select="''"/>
    <p:option name="param8" select="''"/>
    <p:option name="param9" select="''"/>
</p:declare-step>
```

```xml
<p:declare-step type="px:error" ...>
    <p:output port="result" sequence="true"/>
    <p:option name="code" required="true"/>
    <p:option name="code-prefix" select="''"/>
    <p:option name="code-namespace" select="''"/>
    <p:option name="message" required="true"/>
    <p:option name="param1" select="''"/>
    <p:option name="param2" select="''"/>
    <p:option name="param3" select="''"/>
    <p:option name="param4" select="''"/>
    <p:option name="param5" select="''"/>
    <p:option name="param6" select="''"/>
    <p:option name="param7" select="''"/>
    <p:option name="param8" select="''"/>
    <p:option name="param9" select="''"/>
</p:declare-step>
```

```xml
<p:declare-step type="px:assert" ...>
    <p:input port="source" primary="true" sequence="true"/>
    <p:output port="result" sequence="true"/>
    <p:option name="test" required="true"/>
    <p:option name="error-code" select="''"/>
    <p:option name="error-code-prefix" select="''"/>
    <p:option name="error-code-namespace" select="''"/>
    <p:option name="message" required="true"/>
    <p:option name="param1" select="''"/>
    <p:option name="param2" select="''"/>
    <p:option name="param3" select="''"/>
    <p:option name="param4" select="''"/>
    <p:option name="param5" select="''"/>
    <p:option name="param6" select="''"/>
    <p:option name="param7" select="''"/>
    <p:option name="param8" select="''"/>
    <p:option name="param9" select="''"/>
</p:declare-step>
```