DNA2 - A recode of DNA

DNA now stores blocks internally as numbers and only makes the uni_identity and struc_enzymes strings when something has changed. This is vastly more efficient.

In addition, the API for using it has been simplified. Common tasks, such as setting a sub-block, or getting a value from the block, are handled entirely by the DNA datum with simple, easy-to-use procs.

Tested on local server, but may need balancing and additional look-over since the code is from our server (/vg/) and I likely broke or forgot something.
Merge pull request #4012 from N3X15/dna2

DNA2 - A recode of DNA