Use ProcessBuilder to construct program calls

Avoid potential remote code execution through the `parameters`
parameter. They were concatenated to the capture command String
directly, which could lead to the injection of malicious code.

Currently the problem isn't exposed because the potential attacker
can't control the contents of the `parameters` map, since their
contents are chosen from a limited set of values.
Introduce parameter object

Introduce parameter object to simplify the intent of the code.
Encode correctly http parameters

If the value of the parameters had URI reserved characters, they must
be encoded. URI builder handles that.
Refactor to the creation of css file

Error handling improved, removed the call to System.exit.
Move helper methods closer
Remove unused constant
Show output from printing process

It helps to debug any problem that could occur when executing the
processes.
Don't use the same display number always

Otherwise the Xvfb server could fail if another printing request
overlaps. They get different display numbers now.
Fix potential problem

The capture url could be the same if it's generated in the same
second.