Speed up job existence tests by fetching less info

Most methods are asserting that a job exists by calling get_job_info().
Unfortunately that might trigger on the server side a parse of the full
job history to gather the lastSuccessful, lastFailure build numbers.
Since Jenkins is heavily file based, the process is rather long on jobs
having thousands and thousands of build.

Since we only care about checking whether the job exists, introduce
job_exists() which is light on the server side.  To throw exception,
this also introduce the wrapper assert_job_exists() which can futher
customize the exception messages.

Updates all constructs such as:

    if not self.job_exists(job_name):
	raise JenkinsException(<some message> % (job_name))

To:

    self.assert_job_exists(to_name, <some message>)

That speed up operations tremendously whenever the targetted jobs are
very long.

Added coverage test.

Change-Id: I946dbb7a08a8bb172a369af3b2aedc07e3cea9e6
Merge "Speed up job existence tests by fetching less info"