Improvements based on feedback

Specifically:

CacheControl::parse now takes a list of acceptable
"tokens" which will be parsed as symbols if they were provided as
unquoted tokens.

The directives hash is no longer available as an attribute reader, and
validation is done when directives are set
Also removed the now superfluous validate! and valid? methods