Initial commit
Added `site' framework

Verify BASH version is at least 4.0
Added `site:core' profile
Added `libexec/core/sets': math set parser
Added `site:core:hgd' module
Added `site:core:git' module
Added `site:core:dns' module

The public functions are easier to use, and take less arguments, while
the internal function is script-parseable, a little more complex in
use, but obviously contains the engine of this module.

There should be no reason to use `dig' or other utilities in any other
`site:*:*' from this version of this file onwards.

This is how these functions tie into one-another:

    :dns:lookup()
       \\\\
        \\\\_________________dns:lookup()
         \\\_________________dns:cname()
          \\___:dns:fqdn()___dns:fqdn()
           \___:dns:qdn()____dns:qdn()
Added `site:core:ldap' module
Added `site:core:ng' module
Added `site:core:net' module
Added `site:core:util'
Added `site:core:unit': unit-testing framework

This module operates in two modes:

    1. Static
    2. Dynamic

Static mode is where the unit test function is defined within the
module itself, it's straight-forward.

The dynamic mode is where the unit test function is dynamically
defined using matches and values taken out of the unit test
pipe-separated `.csv' file.

In general, complex functions will be defined statically, whereas
simple functions can be defined via the dynamic method.

Additionally, the md5 sum can be used instead of the `stdout' or
`stderr'; this can allow multi-line outputs to be condensed back into
a single line, hence allowing for dynamic unit-testing entries via the
csv data file.
Deleted `README': mostly useless/redundant info

I will add something meaningful at some other point.
Updated `.gitignore': added workbench area

Added a workbench area for files not really belonging to the
repository.
Updated `etc/site.conf': cpf, cleanup, cosmetic

New `site:core:cpf' module

    A new framework for output functions to handle themes, color, etc.

    All modules are now to use this, and not `c', or `printf'.

    Certain types of messages are now directed to STDERR, based on
    the nature of the message.

Cleanup: SSH_OPTS removed as direct calls to `ssh' are no longer
supported, instead the `site:core:ssh' module should be used.

Small cosmetic fixes.
Featire `etc/DEC/site.conf': feature, update, fix

Features:

    Set the USER_LDAPHOST randomly; rather than selecting the first of
    USER_LDAPHOSTS, pick one at random on initialization to spread the
    load.

Fixes:

    Fixed the function completion command so that when one function name
    is completely a starting subset of another, it does not provide a
    choice as if to say it was ambiguous.

Updates:

    Updated `etc/DEC/site.conf': added subdomain.
Generalized `site:DEC:ssh' to `site:core:ssh'

Differentiate between a failed ssh connection (returns 255), and a
successful connection that executed a command on the remote host that
returned a non-zero code.  The only issue is if that program also
returned a 255.

The `-t' and `-T' options for ssh are now handled by the
`site:core:ssh->connect()', based on the nature of the arguments supplied.

Added a user defined array for mapping `p' and `P' to interface names.

RW LDAP server array added for modification operations.

Updated to use `site:core:cpf' functions for output.
Updated `site:core:dns': cpf, lookup()

Using `site:core:cpf' for output.

Updated `site:core:dns->lookup()':

    DNS lookup functions to handle FQDN inputs properly.
Updated `site:core:hgd': syntax, cpf, fix, cleanup, doc

Syntax change for netgroups, operator has changed from `%' to `+'; `%'
is no longer to be used, by anything.  Also added `=', which is a
non-recursive implementation of `+'.

Updated `site:core:hgd->resolve()' functions, so now the internal
function handles wrapping with the assumed `&(...)', instead of
the public.  This means other modules can now (and should) call
the internal function.

Updated the long help message for `hgd:resolve()'.

Use `site:core:cpf' for all output.

General cleanup.
Feature `site:core:ldap': new, cpf, cosmetic

New:

    Added a new `ldap:authenticate()' function to separate out
    authentication code; this function to use RW ldap servers only,
    otherwise a LDAP_REFERRAL is returned (0x0a).

    New function `ldap:esearch' to replace direct calls to `ldapsearch'
    utility (where plausible).  The `e' stands for `eval', so the ouput
    of this function is to be evaled which will in turn generate local
    variables.

Update:

    Existing function `ldap:modify()' now uses this new authentication
    function.

    Show the name of the randomly selected RW LDAP server on
    authentication.

Cleanup:

    Use `site:core:cpf' for all output.

    Use the mappings from `p' and `P' to user-defined interface names
    which are significantly more meaningful.