optionalcascade now requires container and item attr names as args

Hit has also been updated to initialize with some default values
Remove explicit '._items' slicing in optionalcascade

For QueryResult to use optionalcascade instead of partialcascade, this is
needed; as explicit '._items' indexing will return the Hit key instead of the
Hit object.
Merge partialcascade into optionalcascade
More explicit conditional handling in FastaIO

Also, since query_description should be validated by QueryResult, we reset the
Hit's query description attribute prior to appending to a QueryResult.
Initialize QueryResult with/without IDs and/or Hits and change default values to None
Change Hit's default attribute values and allow for flexible setting from empty Hit
Remove attribute checking in optionalcascade getter

For performance reasons. Now we're relying on the object's validation methods.
Refactor validation out of fullcascade into the container objects
Update QueryResult.__init__ pattern to match Hit's
Update HSPFragment default args
Add tests for new Hit inits
hmmer3-text now handles empty hits properly

Previously, it raises an error since the query_description property of the hit
is not set (it has no HSPs from which the value should be retrieved)
Add tests for empty Hits in hmmer3-text (test case from Kai Blin)
Revert to using strings for non-cascading default values
Fix bug caused by default hit/query argument in HSPFragment
Correct typo in MANIFEST, was missing Doc/examples/my_blat.psl