[WFLY-543] Report on boot errors

Updated version of #38. Rebased, corrects some small issues and then:

1) fixes a problem with SimpleOperationDefinition's description provider that prevented describing reply types that are analogous to List of Object

2) Revised the read-boot-errors reply structure to make it a LIST. An example reply (with more data than a typical case would have)

```
{
  "outcome" => "success",
  "result" => {
    [
      {
        "failed-operation" => {
          "operation" => "add",
          "address" => [
            ("subsystem", "example"),
            ("thing", "xyz")
          ]
        },
        "failure-message" => "the failure-description node.toString()",
        "failed-services" => {
          "org.x.y" => "fubar",
          "com.z.q" => "really messed up"
        },
        "services-missing-dependencies => [
          "org.a.b is missing [org,c.d]",
          "org.d.e is missing [org.f.g, org.h.i]"
        ],
        "missing-transitive-dependency-problems" => {
          "services-missing-transitive-dependencies" => [
            "com.alpha.beta",
            "com.gamma.delta"
          ],
          "possible-causes" => [
            "org.etc",
            "etc.etc"
          ]          
        }
      },
      {
         "failed-operation" => {...},
         "failure-message" => "blah blah blah"
      }
    ]    
  }
}
```