Add support for validating different payloads through plugins

We wanted to add support for IODEF validation to Buddycloud. Rather than polluting the core server with validation code that the majority of users will not need I have introduced a plugin system for payload validators.

There are two general changes I have made:

1. Made content validation more generic by removing Atom specific knowledge from the publish processor.
2. Added support for validator plugins. 

To remove Atom knowledge from publish processor I have:
- Passed a generic item element into AtomEntry (and other future validators) rather than the (Atom specific) entry element.
- Pushed the tasks of local and global ID generation, and the in-reply-to getter, into the validator(s).

Validator plugin selection works as follows:

1. Get the content-type of the payload.
2. Use the default validator (Atom) if it can validate the content-type or content-type is null, bypassing the remaining steps.
3. Request a plugin capable of validating the content-type from the plugin manager and return if found.
4. Report unknown content type if no validator found.

The plugin system is not invoked if the content type is not supplied or is the default, Atom. If the plugin manager is queried then it locates an appropriate plugin based on the capabilities reported by each plugin. So we are able to directly request a plugin capable of validating a specific payload type.

Here's a snippet that codifies the above process:
```java
public PayloadValidator getValidator() {

	String contentType = channelManager.getNodeConfValue(node, ContentType.FIELD_NAME);

	AtomEntry defaultValidator = new AtomEntry();
	if ((null == contentType) || (defaultValidator.canValidate(contentType))) {
		return defaultValidator;
	}

	PayloadValidator validator = getValidatorFromPlugins(contentType);

	if (null == validator) {
	    throw new UnknownContentTypeException("Unknown node content type " + contentType);
	}

	return validator;
}
```
I have updated the existing tests to conform with these changes and added new tests where appropriate. You might be interested to see an example of a validator plugin, I have IODEF validator and Atom validator examples. The Atom plugin is superfluous, it was created mainly to help me with testing. I didn't remove Atom validation from the core Buddycloud server!

* https://github.com/surevine/buddycloud-iodef-validator
* https://github.com/surevine/buddycloud-atom-validator

Thanks!