give AM, Batch and Result consistent APIs

This involves three changes.

1) Change `train` arguments to `training_set` everywhere.

2) Remove the ability to pass classification arguments to `classify`
and `classify_all`, as this became confusing because they would set the
configuration for the next method call.

3) Change `Batch` to take it's training set in `classify_all` instead of
in the constructor. This is returned by the `test_set` method only if
called during the course of `classify_all`, i.e. from one of the hooks.
unwrap SvUVX(ST(1)) into linear_flag

It is much clearer to deal with the function arguments immediately
than to have a `SvUVX(ST(1))` 200 lines later. Save the linear flag
in a variable and use that instead.
batch state summary and fix pass method

Create a method for printing the current state in `Batch`. During this
change it was discovered that `pass` was starting at 0, which threw off
if statements. Set pass to undef when nothing is currently being
processed, and when it is set then make it start at 1, not at 0.
Update tests accordingly.
set methods to be undef outside hooks

Make test_set, pass, and excluded_items return undef outside of the
hooks. Update the documentation, and add tests for this behavior.
rename pass to iteration

`iteration` is much clearer as a method name, since `pass` is also
a verb.
test that result->result is undef for unknowns

When there is no class label on a test item, make sure that
`Result::result` returns undef. It did, but now it is tested.
`statistical_summary` has also been updated to note if the expected
label is unknown.
redo hook parameters

Using methods for iteration-related variables did not work out. It was
complicated to implement, and would have required careful reading of
the documentation for users to get it right. Instead, pass all these
variables as parameters.

After understanding the organization of the hooks better, change
`endtesthook` so that it does not receive the iteration number,
which is irrelevant because of the repeat hooks, and to get all of the
result objects for the item (there are multiple if there are multiple
iterations).

As the iteration-specific information was removed from object state,
there is no longer any real point in the `state_summary` method, which
was meant to fill holes opened by the loss of this information in the
reports given by `Result`.

Do any other convenient refactoring/cleanup along the way, including
moving time calculations into the `if($log->is_info)` blocks, and
removing the unneeded `continue` block.
rename all hooks

Give all of the hooks snake_case names, and rename `datahook` to more
clearly represent what it does, since `data` no longer means "testing
data" by itself.
add shortcut for Item constructor

Importing `new_item` will save the user a lot of typing, and reading
for that matter.
Auto-import Item with AM

Everything else is already exported by AM, so add `Item` and `new_item`
to the list. Update test, as well.
update/rewrite all documentation

As the API and design are pretty well settled now, rewrite all of
the documentation to be up-to-date. There was some pretty outdated
stuff in there. Also update Changes and TODO.
change pointers to score and points

AM scores with either pointers or occurrences, so it's misleading to
always call the scores "pointers". Change all 'pointer(s)' to
'score(s)' and comments, documentation, and APIs in `Result`. Add a
note to the documentation about word usage. Update tests to match.
rename num_variables to cardinality

`Result` has the last public-facing usage of `num_variables`, so
change it to `cardinality` to match everything else.
rename unknown to null; null is =, not UNK

I remembered that `null` doesn't just mean `unknown`, but also N/A
or non-existent, etc. So change the documentation and APIs back to
`null`, and add a separate option for specifying the null string,
since unknown class and null feature value are two different things.

While I'm at it, the null string should be `=` like it always was,
since that is only one character and can be used in the nocommas
format, whereas UNK cannot.
rename training_data_hook to training_item_hook

I think the latter is clearer, as it implies that an item is provided
to the hook, or that a single item is involved somehow.
import everything from Batch

As in `AM`, make `Batch` so that importing it also imports all of the
other useful packages.
remove training_data setter from AM

The `training_data` input to the `AM` constructor needs to be a
one-time deal, as it is used for the initialization that occurs there,
and this state should not change again later.
document bigints in Result

Add a note that all scores given by `Result` are specialized big
integers and needs special care.
organize method documentation for Result

Add another header to indicate methods that give classification
information to match one about classification configuration. Move
the timing methods into this section. Also put the `result` method
first, as I think it may be the most confusingly named and possibly
the most important one.
work around bug in OverridePkgVersion

OverridePkgVersion is used so that the version can remain in `AM.pm`,
which is important for XS loading. The plugin replaces version for you
during release, but doesn't work with numerical versions. So replace
the number in AM with a string.