Generic data matrixes for RSA

This is my first attempt at making a generic object.  I couldn't get it to
compile at first.  I tried to create non-array types based on an input, but
GNAT complained.  I had to send in two derived types manually.
Finally figured generics out, but not what I want

I'm commiting what I have before I scrape it.  I was thinking generics could
act as object templates.  It works, but I only have one instance.  I need
many, like objects.  Maybe I'll see if I can make generic objects (rather
than child objects due to type changes).
Change generic package to objects

This updates the generic matrix package to work as an object.  It seems to
work, other than the prefixed notation.  I don't know why this isn't working.
Started utilities, changed to mod type

Through #ada channel, I learned mod type (for bits) is better for these
RSA algorithms.  I converted the existing over and started on the helper
functions.
Removed interfaces completely

To avoid pulling in an extra package, I removed the unnecessary interfaces
because they really aren't necessary to do shifts.
Added more utilities and fixed dot notation

This adds for more RSA utility functions, and also tags the generic
object so that dot notation can now be used.
Added DMult procedure to RSA Utilities

See title.
This is the last of the mathematic helper functions.  I might add some
tryanslation functions later.
Added math functions to generic matrix

These two shift functions fit inside the generic object, but the remaining
functions mix object types and I need to figure out how to handle that
in the best way.
Minor corrections

This fixes the two generic functions that I built last night, plus explicitly
zeros out the length when zero_array function is used.
Working only with key sizes 4096

It was going to be a nightmare to deal with discrete versions of the keys, so
I'm only going to work with key sizes of 4096 and have it be able to handle
smaller keys.  Yes, some memory is wasted, but really it's not very much.
The convenience is worth it, and makes the code simpler.
I'm fed up with the multiple classes

This task is so much harder because I have QuadByteMatrix and
ExtQuadByteMatrix.  The only difference between them is the size of the
matrix.  This is not a lot of memory.  Rather than have several overloaded
versions of the same procedure, I'm leaning heavily to consolidating this
for simplicity.
Merged ExtQuad into Quad

After removing ExtendedQuadByte type and merging it into QuadByte type,
several functions could be deleted and the thing compiled quickly.  I think
I can move some of these functions back to the generic class.
Added NN_ModExp function

See title.
Hexstring to byte function added to key_4096

This hex2byte function is used to convert ASCII string represention of key
components and translates them to bytes.
Snapshot on RSA frontend - compiles

See title.  Stopping for the night.
Consolidating NN functions to NN package

This is part one of two commits to move all "NN" functions to a dedicated
package.  Part 2 removes the functions from other packages.
Removed old NN functions (2 of 2)

This is the second of two commits to remove the NN functions from the key
4096.
Reworked NN completely

The original code was based on pointers and the functions didn't always start
with the index=0, so I decided to explicitly pass the origin of each array
in every function.
Started on radix-64 encoding

This adds encoding from binary to radix-64
Added convert radix64 to byte function

See title.