Refactor RegistryKeyList

This is in preparation for page patching. The old code kept dynamic
(programatically created) and serialized keys separate. This had the
potential to reorder the key list during the application of a patch.

This is separate from the prp-patches branch to facillitate review.
Build plPageOptimizer.
Use puts instead of printf.
Merge pull request #272 from dpogue/optimizer

Build plPageOptimizer.
Please just use the coreutils md5sum/shasum/sha1sum tools
Merge pull request #264 from Hoikas/keylist

Refactor RegistryKeyList
Add basic regex functionality to plString
Merge pull request #261 from zrax/regex

Add basic regex functionality to plString
Merge pull request #260 from zrax/coreutils-hash

Remove redundant unnecessary apps
Re-define nil as nullptr, cleaning up some potential issues along the way
Add option to build with static libpcre
Merge pull request #276 from branan/static_pcre_option

Add option to build with static libpcre
Add additional functionality to plFileSystem as needed
Deprecate plFileUtils and parts of pnUtPath
Finish deprecation of pnUtPath
Remove hsFiles in favor of plFilesystem stuff
Merge pull request #270 from zrax/nullptr

Re-define nil as nullptr, cleaning up some potential issues along the way
Fix issues from review
Merge pull request #275 from zrax/file-utils

Unify filesystem utilities
ARRAY(T) uses malloc, and therefore breaks classes which need constructors