Multi Run List Support for Policyfiles (ChefDK portion)

Adds support for named run lists to the Policyfile DSL and includes them in the lockfile if any have been set in the DSL. In the DSL it looks like:

```ruby
named_run_list :update_jenkins, "jenkins::master", "recipe[policyfile_demo]"
```

Which would add this JSON fragment to the lockfile:

```json
  "named_run_lists": {
    "update_jenkins": [
      "recipe[jenkins::master]",
      "recipe[policyfile_demo::default]"
    ]
  },
```

Chef Client will need to be updated to allow the user to select a named run_list in order for this feature to actually work, though.

@opscode/client-engineers 
Because you have logic for de-duping dependent cookbooks, can you have a test that validates this?

EG, if 'cookbook-1' depends on 'cookbook-dependency' and 'cookbook-2' depends on 'cookbook-dependency', a named run_list of 'cookbook-1' and a run_list of 'cookbook-2' only generates 3 demands.