Add validation support for empty_list and empty_array

Since object matching is not strict and allows extra keys, there is currently no way to may against an empty object.

This patch adds that support as a separate matcher, and also includes a similar matcher for empty list.

It supports them being at the top level of the spec as well as a value