Made Jobs sharable between executions

Before, running a new workflow would not use jobs from previous workflows, not
even from the same workflow version.  Now jobs exist outside workflow
executions. Combined wit using the original module signature, this makes it
work better as a cache.

core/interpreter/job.py:
  - Jobs now exist outside workflows, but workflows still reference jobs.
  - Renamed modules -> jobs

core/console_mode.py: Modified job manager method names
gui/job_monitor.py: Modified job manager method names
Merge branch 'master' into job-cache
Set default job name to module class name

core/interpreter/job.py:
  Set default job nasme to self.__class__.__name__

Renamed _running_Workflows -> workflows
  gui/application.py
  gui/vistrail_controller.py
  gui/vistrails_window.py
Added method for persistent caching of outputs using jobs

Adds persistent caching of outputs for any module using new
control parameter job_cache

core/modules/vistrails_module.py:
  Added job_cache control parameter and checking/setting job cache for
  modules that use it.

gui/module_iteration.py: Added gui to set job_cache
Renamed ModuleIteration -> ModuleOptions

Because it now contains non-looping options
Also fixed issue with saving

gui/module_iteration.py -> gui/module_options.py
gui/pipeline_view.py: Changed action name
gui/vistrails_window.py: Updated imports
Merge branch 'master' into job-cache

Conflicts:
	vistrails/core/interpreter/job.py
	vistrails/core/modules/vistrails_module.py
	vistrails/gui/module_options.py
Save job info in the vistrail

* Jobs are shared between workflows in a vistrail
* Easier to share jobs

core/configuration.py:
  Removed runJob and added jobInfo
  runJob is not needed when you can run a workflow normally
  jobInfo lists jobs in a workflow

core/console_mode.py:
  Use the controller JobMonitor

core/interpreter/cached.py:
  Use the controller JobMonitor

core/modules/vistrails_module.py:
  Use the controller JobMonitor
 - job_monitor: *new
   Returns the JobMonitor if controller is specified

core/vistrail/controller.py:
  Use the controller JobMonitor
  load/save job information in the vistrail using a __jobs__ annotation

core/vistrail/job.py: *moved from core/interpreter
  Removed single instance. We now store a JobMonitor for each controller

gui/application.py:
  Need to create a controller before we can get job info

gui/job_monitor.py:
 - QVistrailItem:
   New class for showing the
 New icons for vistrail and workflow. Moved state icons to 2:nd column

gui/vistrail_controller.py:
 - getAllViews: *new
   Returns a list of current views

gui/vistrails_window.py:
  Added controller_changed signal to QJobView
  Removed check to delete jobs when closing vistrail
Fixes jobs inside automatic loops

core/interpreter/cached.py:
 - _handle_suspended:
   Removed error.signature and unused identifier i

core/modules/vistrails_module.py:
 - ModuleSuspended: Removed job_id attribute
 - VistrailsModule.compute_all:
   Create a new module for each iteration
   Fixed module.typeChecking -> self.typeChecking
   and module.setInputValues -> self.setInputValues
   This was breaking signatures. Also fixed other methods.

core/vistrail/job.py:
 - JobMixin:
   Removed finishJob call from updateUpstream. The logging object
   is not created yet so we need to call it in compute() instead.

gui/job_monitor.py:
   Updated to reflect other changes
Moved hadoop modules to 'hadoop' namespace

Updated to use controllers JobMonitor

Bumped version to 0.3.1 and added upgrades
Fixed job using old workflow version

gui/vistrail_controller.py:
  The old job workflow was used when clicking execute while editing a parameter
  We now delay the job workflow creation to after all changes have been applied
Fixes JobView not being updated when executing old job in new workflow

core/vistrail/job.py:
  - JobMixin.compute:
    Always call addJob or setCache so that the gui gets updated correctly
Added RemoteQ module RunJob

packages/RemoteQ/init.py:
  - RunJob: *new
    Whereas RunCommand waits until it finishes, RunJob runs a job
    over SSH asynchronously. It can be detached, returns stdout/stderr,
    and fails with a ModuleError if return code is not 0.
RemoteQ: Check exit code after RunCommand finishes

packages/RemoteQ/init.py:
 -  RunCommand:
    Raise ModuleError if exit code is not 0
    Fixed removed self.cache
Expanding/collapsing versions don't change vt
Removes unused set_num_versions_always_shown()
Merge branch 'job-cache'
Merge branch 'controller-not-changed' into 'master'