Added host cmd line option to restraint client.

There is now a --host option for restraint client that parses stings in
<whiteboard>=<host>[:<port] format into a hashtable that should later be used
instead of '--remote'.
Storing actual uri in recipe_hosts hash table.

Instead of storing in the recip_hosts hash table a user-supplied string, parse
it and store a SoupURI instead.
Make find_recipe() return specific recipe.

find_recipe() was just returning the first recipe from the set, not the one we
were looking for. It now checks the recipe_uri and tries to find the recipe
with specified id reverting to previous behaviour if failed to do so.
Parsing recipe_uri is not the best way to do this so in future we should
probably track the recipe_id somewhere inside the server.
restraintd: config_port memleak fix

Fixed config_port variable leak in server.c
Initial mh support for restraint client.

Support for multiple servers in the client, all recipes are now handled
separately(although in the same evloop). This does work with simple mh recipes
but error handling needs more work.
parse_new_job() wboard memleak fix

This commit fixes a wboard var memleak in parse_new_job() in case when hostname
is not specified.
Default wboard value for recipes with undefined wb.

Adding default whiteboard values for those recipes which have it undefined.
Cleaning up extra whiteboards.

Cleaning up whiteboards that were supplied on the command line but are not
actually in the xml.
exit if failed to init recipe

If failed to init recipe for some reason - exit right away as there is nothing
we can do.
Fixed premature quit on a problem with a single recipe.

Instead of calling g_main_loop_quit() on a problem with a single recipe - just
mark it as "Aborted" so that others can still continue their execution.
Log paths in job.xml fix

Fixed log paths to be within the specific recipe, also changed the directory
structure because jobids can overlap in different recipes.
restraint client use a single "server"

Instead of spawning a separate server for each recipe - use only one.
"port" option fixed

The check for specifying both run_dir and port was made after run_dir var was
populated by the client so specifying the port always triggered this error.
This check is now moved.
copying "role" attr in copy_task_nodes()

When creating new job xml copy over "role" attr for each task.
Switched to ids instead of wboards

Instead of using whiteboards to identify hosts use recipe_ids. This will make
things a bit easier and accounts for jobs with non-unique whiteboards.
Quitting loop on last aborted task.

Previously the only way to quit the loop was by receiving a 'status' request
from a server, now we check if there are any tasks left after each call to
abort_recipe.
Creating task/params in copy_job_as_template().

Client now creates params node that contains servers and clients lists for
each task. The node is populated based on task roles and hosts supplied through
command line parameters.
Documentation update.

Updated docs to point to --host cmdline option instead of deprecated --remote
option.
Untie recipe_id from rundir_id.

For some reason recipe_id was tied to rundir_id so that starting recipe id
depended on chosen run_dir. This tie is now removed.
RecipeData init while copying xml template.

Since RecipeData is now needed earlier (in copy_job_as_template() instead of
parse_job()) we'll need to check if it is properly initialized in that function
as well.