Use exec instead of forked child process for JVM

Using os.system() for creating the JVM forks a child of the Python
process. This makes it difficult for process managers like daemontools
or runit to kill/restart the process at admins' command: the process
manager tracks the PID of the Python process instead of that of the JVM;
and terminating the Python process unfortunately doesn't kill its JVM
child.

Some process managers let you configure the number of times the service
forks, or try to detect forks, but it's a bit of a rabbit-hole. Better
to make the service not fork in the first place.

For that reason I've replaced the call to os.system() with os.execvp(),
which replaces the Python process with the JVM, and thus lets the
process manager track the right PID.

os.execvp() requires that you give command-line arguments as an array of
strings, rather than one long whitespace-separated string, so I had to
change some of the surrounding code accordingly. Note this has the
pleasant side-effect that Storm should now also run if you install it in
a directory that has spaces in its path name.
Add taskId to EmitInfo
Add ackingTaskId to BoltAckInfo
Allow quoted whitespace in childopts

For example: '-Dsome.config="aaa bbb" -Dother.config=ccc'
gets parsed into ['-Dsome.config=aaa bbb', '-Dother.config=ccc']
-- like what bash does.

Sorry for the heavy regexes. I think pyparsing has a built-in parser for
this, but I'd rather not add another dependency for this fairly minor
feature. I don't think there's anything suitable in the Python stdlib.
Don't forget to delete Storm shell's temp jar

Need to use a subprocess, not exec, since exec never returns and thus
the "rm" never gets executed.
Add failingTaskId to BoltFailInfo
Use task-id instead of calling .getThisTaskId
Add spoutTaskId to SpoutAckInfo
Add spoutTaskId field to SpoutFailInfo
Fix regression with passing args through to JVM

Python's *args in a method definition creates a tuple, not a list; and
tuples can't be concatenated with lists.
Merge branch '0.8.0' into 0.8.0-better-hooks
Make docstring raw, to preserve escaping examples
Handle confvalue returning None
Moved initialize call in Bolt and BasicBolt into try ... except block
Make confvalue() never return None

There are three places in the code where the return value of confvalue()
is concatenated with a string, which fails if the value is None. Rather
than changing them all, I thought it would be better to make confvalue()
return an empty string if the configuration for that value is absent.
implmented the java version of complete-topology
implemented the java version of tracked topologies
implemented the java version of simulated time
refactored args of withSimulatedTimeLocalCluster and withTrackedCluster
refactored completeTopology