Adding capability to delete resources via label selector

@smarterclayton, @bgrant0607  @derekwaynecarr Thanks to have a look when you have time

See #2438 for motivation.
We need to extract this before merging, otherwise we won't be able to use it in OpenShift.  The general pattern for that is to add a method on `cmd.Factory` like `AllResourceNames: func() []string`.