Graph based task serializer for deployment

Historically dependencies between roles was hardcoded in nailgun
orchestration logic. To support granular roles and plugins
we need to be able to define it with configuration.

The easiest and most essential way to resolve dependencies
between roles, tasks and stages is to use graph model, which is
added in this patch.

RFC of API:
  https://etherpad.openstack.org/p/rfc_granular_api

Required change in astute:
  Change-Id: I28928e86ea4017288478703c6075b315b120349a

implements blueprint granular-deployment-based-on-tasks
Change-Id: Ie627cbe54cd88627ece3d5b559daf0475f460abb
Merge "Graph based task serializer for deployment"