Refine types, remove redundant types.

Removed DirectiveArg and DirectiveName, they are easier to work with
using their base types - [String] and String respectively. Also begun to
document the functions.