Enforce that store and layer names are xml-safe at the catalog level

As discussed on the mailing list, it is problematic to have layer name that are not XML-safe in GeoServer.  This patch adds a validator to reject such names, and ensures that such validators are enforced in the REST API and web interface.  I think that it still needs a little work to give better errors (right now any validation is reported with a generic "Validation failed" message) but here is the approach.
Right, i see. Apologies if this is becoming tedious for you but what if we changed the return type of what was returned from Catalog.validate() to be something like:

    class ValidationResult {
       /* list of errors, possibly empty */   
       List<RuntimeException> errors();

       /* equivalent to errors().isEmpty() */
       boolean isValid();

      /* equivalent to new method */
      void throwIfInvalid();
    }