Handle requests with no attributes correctly in the test server.
Add basic RFC 3576 support based on the work of Gabriel Blanchard.

This adds basic support for CoA and disconnect messages, along with the
required constants for the new message and attribute types.
Add support for sending tags in non-vendor attributes.
Add untested support for vendor attribute tags.
Password attributes don't support tags, obviously.
Hexdump the error output when an attribute match fails for easier reading.
Add test server support for vendor specific attributes.
Fix VS attribute size handling.
Add vendor specific attribute setter tests.
No way this will be a 1.2 release.
Add radius_get_tagged_attr_data() and radius_get_tagged_attr_tag() functions.
Add the salt-encrypt algorithm defined by the RADIUS WG back in the day.

This is based on the original code from Gabriel Blanchard, but with significant
changes to make it more robust. I've also moved the implemention into the PHP
layer, rather than the radlib layer, since it depends on PHP functionality to
run and hence needs access to TSRM. The following commit will actually wire
this up to the various attribute setters.

I've also added a radius_salt_encrypt_attr() function that basically exposes
the internal function to user space. I'm not sure it's overly useful in
practice, but it does make testing a tonne easier.
Fix indentation issues.
Refactor tagging into an options parameter in radlib.

When I implemented tagging, I should really have taken a step back and figured
out the best way to do it rather than just hacking it in. There wasn't really a
need to implement parallel radlib functions for this: it kind of works if tags
are the only attribute option, but with salting coming in as well, it just
didn't make sense.

On the bright side, this actually results in a net loss of code with the test
suite still passing just fine. That's the sign of a good commit. I hope.
Move salting back into radlib.

My main motivation for putting it in radius.c was to avoid TSRMLS_FETCH(),
which is kind of ugly and slow, but realistically it belongs here. I was also
concerned about the dependency on PHP code, but the MPPE demangling code
already depended on PHP's internal MD5 implementation, so we're no worse off
there.
Fix a memory leak when salting values.
Implemented attribute salt-encryption.

This handles everything except for testing salt-encryption of vendor specific
attributes, which is coming shortly.
Get rid of the SaltedAttribute test class — it's actually pointless.
Avoid overflowing the attribute buffer when constructing a VSA.
Make the attribute parsing and comparison code more robust.

The parsing code assumed that all Attribute objects had their entire raw value
in the value property, which was no longer true of VSAs. This hadn't previously
been spotted because there weren't attributes after the VSA in the request.

Additionally, the comparison code didn't handle salted VSAs at all.