Add scheduling specific task on sucess/error

 * Fix get task properties, get task in DSL
 * Evaluating task on success/error/finish properties in engine:
   - evaluate YAQL conditions
   - schedule tasks
 * Unit tests for handling success/error/finish

 * For real work with context there is need to store
   it somewhere

Implements: blueprint schedule-tasks-after-completion

Change-Id: Ia9c34e755055ff0273dcd79a314858dbfbcc2fa9
Working on Data Flow (step 1)

* Refactored API layer so that we can work with 'context' as with a
 json object in underlying layers (DB, engine, etc.) rather than
 a string
* Added "context" parameter in all required places
* Added necessary Data Flow related properties to DB models
* Refactored and fixed a series of tests
* Minor formatting changes

TODO:
* Calculation of task incoming context
* Abstract interface for expression evaluator
* Data Flow related tests

Partially implements blueprint: mistral-dataflow

Change-Id: Ie7f94d79265e9861f7ad15c76ff6d788ec62b683
Working on Data Flow (step 2)

* Added ExpressionEvaluator interface and YAQL implementation
* Removed yaql_utils, evaluator is now a more flexible replacement
* Fixed the places where yaql_utils was used
* Adjusted test cases

Change-Id: I7de70e678c211df34788763047b8361de0d3902a
Fixed critical pylint warnings

Fixed the following pylint warnings:
   W0231
   W0621
   W0621

Change-Id: I6d49a19f843ab2b63740199ef387e7e878fa030f
Partial-Fixes: bug #1281164
Fix throwing exception when 'output' block is not defined

 * Deleted exception when 'output' block in REST_API task
   is not defined. In this case result is the whole object
   returned from extract_state_result

Fixes bug: #1280117

Change-Id: I8143283133994d39e34e9c82493b2cff67fa0d59
Partially fixed the pylint errors

Fixed several errors:
   E1003
   E1101

It is impossible to fix all E1101 errors: looks like we have
problems with outdated DataBase models.

Change-Id: I46863c553f033e5f9e4ae9cb9c20e297c099a114
Partial-Fixes: bug #1281164
Make engine configurable, make debugger show local variables

To make it easy to set Mistral for debugging.
1) Make engine configurable.
2) Enable debugger via command line. Passing --use-debugger will make PyDev or PyCharm show
 local variables in debugging session.

Also, a tiny fix in action_factory.

Change-Id: Id054ae5156649b1f6bbba7131e54bf21d71c659a
Merge "Partially fixed the pylint errors"
Merge "Make engine configurable, make debugger show local variables"
Working on Data Flow (step 3)

* Refactored tests hierarcy (moved get_resource to the base class)
* Fixed logic in abstract engine (transaction scoope was wrong)
* Added stub methods for context manipulations (not everywhere yet)
* Refactored actions
* Created ECHO action to be able to emulate required output
* Added simple data flow test (two dependent tasks)

TODO:
* More tests
* Refactor actions according to the latest discussions

Change-Id: I5ba5e330110889014eeca53501ddae54dc9a1236
Working on Data Flow (step 4)

* Publishing variables in execution context
* Additional tests (publishing and context manipulations)

TODO:
* More tests

Change-Id: I8f1e6d7a7a1251b507e33a0cc11bb1afbee3a2c2
Working on Data Flow (step 5)

* Testing subsequent tasks

TODO:
* More tests
* Actions refactoring

Change-Id: Ib057e76479cac065cc430e4b5af60db314c3a3f2
Use oslo.messaging for AMQP communications

Ported task executor to oslo.messaging. The executor module is
replaced with RPC server/client named Executor and ExecutorClient
respectively to handle task execution. The old executor module is
deleted.  The engine is modified to use the ExecutorClient to send
task requests over the transport to the Executor. The launcher is
modified to start the new Executor.

Change-Id: Ibce01813e51c2220c45e05bb820b4729027446a3
Implements: blueprint mistral-oslo-messaging
Merge "Working on Data Flow (step 5)"
Implement new object-model specification

 * Implemented new object model
 * Implemented spec validation
 * Old DSL parser was deleted
 * All code is replaced by new workbook spec
 * Also tests are fixed
 * events -> triggers
 * Unit tests

Implements: blueprint mistral-dsl-model
Partially implements: blueprint mistral-dsl-validation
Partially implements: blueprint mistral-rename-event-to-trigger

Change-Id: I782b7983ddc724375229587f467c55ad9341478b
Rename 'events' to 'triggers'

 * "events" are renamed to "triggers"
 * triggers moved out of workflow section

Implements: blueprint mistral-rename-event-to-trigger

Change-Id: I5b76e9c063a3ce9eec5d485bb5db5e22ac7981d4
Fix getting task on-* properties

Fixes: Bug #1288227

Change-Id: I46680abe82c86e6b40b7f0274ad40f8c6cc250ef
Merge "Rename 'events' to 'triggers'"
Fixing executor launch script

* Executor launch script should now start engine because
 it calls engine.convey_task_result() directly. It's a
 temporary solution until engine is a standalone process.
 When it's done executor will be sending a message back to
 engine instead of making a local call.

Change-Id: I4666ca5f1a9cb093e8b7c9e640048f0176955595
Fixing ordering bugs in workbook model and tests

* When parsing yaml we can't rely on order of properties
 because it's against yaml specification
* In tests we often make assumptions about list items order

Change-Id: I536bc31ba7bee68e2904a23af73004f2e0ba2261