better code formatting

Remove the long TODO note that says "this would be better if..." and
just fix the thing. Change the code preprocessor so nothing breaks.
move activeVar and excludedData into result hash

Begin making a result object by moving info on excludedData and number
of active variables into a hash and returning/using that instead of
directly querying `$self` or that mysterious `$data`. This is also nice
because `activeVar` and `activeVars` won't be confused anymore.
`print_config` method now only needs one variable

Change `print_summary` to `print_config` (since it just prints
configuration information, not classification information). Refactor
all relevant configuration data to be in the `$result` variable, and
pass only that to the method (which is now a function). Rename
`$self->{eg}` to `$result{given_excluded}` so its function is no longer
a mystery.
add Result class

Write a new class, `Result`, that for now just holds all of the
configuration information for a single classification and can
print it. Use this new method and get rid of `print_config`, which
is no longer needed.

Needs tests, and maybe input checking (filed a request for that:
https://github.com/dagolden/Class-Tiny/issues/14). Also needs
documentation on accessors, but wait for those as some things might
change.
comment/refactor statistical summary print

Add comments explaining the code that prints the statistical summary.
Still need to add more comments to the rest of it, but it's a start.
Also change the long `if` statement comparing `$n` with `pointermax`
to simply use `bigcmp`, which is much clearer.
create BigInt helper module

Move `bigcmp` into a new helper module, `BigInt`. Use `Import::Into` to
automatically import `bigcmp` into packages that use `Algorithm::AM`.
move statistical summary into Result

Move the statistical summary logic/printing into Result and call
that from AM.pm. This required the addition of several new accessors,
and Result now stores whether the predicted outcome was a tie or not.
This is not yet printed or tested anywhere, but will be important in
the future.

This is quite a lot of refactoring and will doubtless need more
refactoring later, as much of it still seems quite messy.
general cleanup/refactoring

Rename variables, rewrite loops, change expressions/spacing for
readability, and reuse code where possible (`bigcmp). Most
importantly, put the logic for context-labeling into its own function.
This is a big improvement because previously that portion of code was
a complete mystery.

Document mystery variables in AM.xs where possible, contributing to
issue #11.

Update TODO.txt when ideas come.
refactor and move analogical set code into Result

Refactor, rename, reword, comment, etc. wherever possible. Add a
comment for the structure of the `gangs` variable, which works
towards issue #11 (just two variables left).

Move the analogical set printing logic into Result. Things are
still getting messy but slightly more manageable than before. Condense
the code from two loops into one by printing the analogical set grouped
by common contexts instead of in order of appearance in the data set.
I believe that this is a clearer presentation, anyway, especially since
it groups items that have the same numbers together (all items in a
context have the same number of pointers).

Update TODO.
move gang printing into Result

Finally, move gang printing into Result. Change the _process_stats
input to accept the rest of the required information. Use the value
of the gang option and the exclude nulls option to determine printing
behavior at runtime instead  of using the `## begin skip gang list`,
etc. markers for eval code editing.

Update TODO.
make gang_format private
rename grandtotal to total_pointers

'grandtotal' is not a descriptive name, so rename it to convey what it actually is.
add tests/documentation for Result.pm

Add rough tests for `Result` that only test it through its printing
methods. This will suffice for now until further functionality is
added to Result. Also add documentation explaining the string info
methods, but not giving an exact format as I do not want anyone to
depend on it programmatically.
use Results API in classification tests

Instead of reading and searching `amcpresults` after every
classification, use the `Result` API to get results instead. This made
the test somewhat faster.
update 08-probability.t to latest API's

Create a project programmatically instead of reading a directory.

Simply test that the correct number of `Result` objects were returned
instead of reading `amcpresults`.

Put the file in the AM test folder, since it tests the AM options.
update and move probability tests

Use the latest API (which reduces disk usage) in the probability
test, and move it into the AM folder since it tests an AM option.
create an analogical set API and test through it

Add a method to `Result` to return the analogical set. Refactor
`Result` so that the new method and the printing method do not
duplicate work, instead retrieving and caching analogical set
information in a separate method. Change the printing method back
to simply outputting items in order of appearance in the data set;
this makes the cached structure easier to work with, since I don't
want the new method to return groups of contexts (which is the job
the gang effects reporting, and is not simple enough for the new
method, which already requires the user to lookup the data item
themselves).

Change the analogical set test (previously in `07-skipset.t`) to test
through this API instead, and move it into a method in the file with
the other classification tests.

Update TODO.
remove use statements

Remove unneeded `use` statements that were accidentally left behind
when updating these tests to the new `Result` API.
update API usage in hooks test

Use new `Result` and `Project` API instead of reading from disk.
Use the `analogical_set` return value for now to check exclusion;
this will need work, but it needed work before, too.
init datatocontext and itemcontextchain

These two variables were not being reinitialized between classification
passes, which seemed problematic. Also add a note about why all the
variables are dereferenced before assignment, since I tried to assign
`[]` and made perl crash!