Extended PayloadTree to initialize correctly with strings.

Example:

    >>> tree = datastructuretools.PayloadTree([['some', 'text'], ['even', 'more', 'text']])
    >>> print(format(tree, 'storage'))
    datastructuretools.PayloadTree(
        [
            ['some', 'text'],
            ['even', 'more', 'text'],
            ]
        )

This corrects a longstanding bug.

This commit also extends PayloadTree with an item_class initializer keyword.
This allows PayloadTree effectively to mimic the behavior of the
TypedCollection subclasses.

Example:

    >>> tree = datastructuretools.PayloadTree([[1.1, 2.2], [8.8, 9.9]], item_class=int)
    >>> tree
    PayloadTree([[1, 2], [8, 9]])

This pair of changes will allow PayloadTree to be subclassed in pitchtools.