Overhaul `live/core/hgd': new, cleanup

Overhaul:

    Overhauled so all non-public functions take a new mandatory
    argument for `tldid'.

New:

    A new syntax for searching `~/.known_hosts'; the old `.' syntax
    is still there, but now there is a `/<regex>/' syntax which is
    much more powerful.

    New function for renaming an existing HGD.

    You can now optionally leave out the outer most `|(...)', and one
    will be assumed.

Cleanup:

    Rearranged functions into more sensible shape.

    Small cleanup and cosmetic changes made along the way.
New `etc/site.conf': caching

It is now possible to cache functions, obviously the symantics of each
set of functions must be considered before deciding which functions
would benefit from caching, and which will not.
New `lib/core/dns': caching, sd(), retro (hgd)

New:

    * The main dns function that is called by almost all other dns
      functions is now cache-enabled.

    * New public/private function pair for retrieving just the
      subdomain portion of a host: `site:core:dns.sd()'.

    * Warn on multiple matches on fqdn calls.
Updated `lib/core/ng': caching, cosmetic, fix

Cache-enabled an internal and a private function.

Updated the summary output to be a little prettier.

A small but important bug fix.
Updated `share/template': caching

Update the template file with example of how to cache-enable a
function.
New `lib/core/remote': copy(), fix, retro (hgd)

New:

    New public function to interface the already available internal
    function.  Note that as part of doing this, the argument list of
    the internal function has been slightly simplified, and so it
    needs to be amended in all callers.

    ::remote:eval:tmux()

    remote:connect() split up into public and private (new)

Fix:

    Fixed a small but important bug with how rcmd array was
    (incorrectly) checked.

    Retrospective work based on the recent hgd overhaul.

    Other small cleanup work.

    Added required python module for `remote:mon'
Overhauled main site engine code and configuration

The `etc/core/site.conf' contained much more than `configuration'
data, which conflicts with the generally accepted usage of what
goes under `etc', and so this commit has cleaned this mess up by
splitting this file into either:

    `etc/site.conf' - for configuration data

    `lib/core/site' - for the actual site engine code

Other than the split, there are no other changes introduced in this
commit.
New `bin/ssh': ssh helper script

This script does nothing more than provide a convenient replacement
for ssh, and `site remote connect'.  Use the symbolic links created
instead of ssh, and site will take care of the things like resolving
short hostnames, routing via ssh proxies, etc.

The Makefile has been updated to create required symbolic links.

Finally, the ssh script uses the newly implemented global flag for
caching, so that dns lookups a quick even when user provides short
hostnames.
Updated `lib/core/ldap': rename, fix, new

New test for verification netgroups nisNetgroupTriple tuples, to
check for correct, warning, and erroneous data (Josh Roberts).

The `ping' function is now called `checksum', and taks an optional
list of two or more indexes into the configured LDAP hosts array,
which is a site-specific configuration.

This function now also compares netgroups (rather than just users),
however there is some serious hard-coding going on at the moment.

Fixed a bug with the public ldap search which would only return one
entry; now it returns all matches, separated by blank lines.
Update `share/siterc.example' to match latest changes
Split `lib/core/unit': split in two

The static unit-tests have been carved out, and now we have:

    lib/core/unit - for the dynamic code
    share/unittest-static.sh - for the static code
Removed: `ldap:ngldif()'

This belongs to somewhere more appropriate: in a `doc' module.
Tweaking `libexec/core/ssh' - INCOMPLETE
Preparing to purge profiles

Also removed some old junk.
Moved from libexec/core to libexec/
Restructure: modules moved for segregation work

All modules from `lib/core/*' have moved to a new directory called `module'

The one file in `lib/core' which was not even a module (called `site')
has now moved to `lib/libsite'.

Small bug fixes along the way.
Retro `lib/libsite': segregation, new user profile

This retrospective fix is as part of the module segregation fix, not
only has this file been moved (used to be `lib/core/site'), but it now
presents new *_MOD_* variables - an area specifically for site
modules, not under `lib/'.

Fixed minimum requirements for new user profiles.
Added example site.conf for new user profiles
Overhauls: segregation and extern

Segregation:

    Work to split up modules, to allow internal business logic to
    be easily seperatable from the core site code.

    This work's focus is to change the structure of the code, to
    separate site-specific code from external configuration data.

    The result is that site can finally move into github as it
    contains no business data, and users can then use a separate
    repository for managing their site's configuration data.  The
    `profile/' directory is provided for this purpose (and is thus
    in `.gitignore').

Extern:

    Overhauled how `extern' builds are carried out.

    This is now much cleaner, with a proper install and uninstall;
    at both makefile levels.
New `lib/libpy/libsite': site python module

lib/libpy/libsite:

    This new python module is for site; even though site is in general
    all about bash, at times it relies on higher level functionality
    from other languages, and for python, this is where that extra
    functionality is coded.

libexec/ssh:

    Moved out python secret function into new site python module, and
    updated it to use the new site module.

lib/libsite:

    The core bash lib file has been made aware of the new new python
    site environment.

.gitignore:

    Updated to ignore `*.pyo' and `*.pyc' files.