create-top.sh: improve install packages function

The function that installed the port packages into the target OS has been
significantly improved.

The function now set uses nullfs mounts to avoid copying packages
unnecessarily and then having to remove them at the end.

It also now sets the location of the package site in the pkg.conf file.
This informs pkg where the package database and package storage directory
are located, in this case as a local url.
This means that packages are now being installed as intended where before
a small hack was used to translate between specified required ports and
pre-built packages in a directory.
create-top.sh: Formatting changes

Small formatting change to improve readability.
create-top.sh: Remove quotes from around BUILD_NUM variable

This prevents BUILD_NUM being used as a string when it is an integer.
cfg: Remove files that are only in /cfg when syncing

Syncing now automatically removes any files from /cfg if they do not exist
under /etc.
cfg: Replace copy with RSYNC if it exists

Significant speed improvements are expected since the files under /etc will
only generally experience small changes to their content, with the bulk of
the content remaining the same.
Adding wait_on_cfg.sh: Script to monitor changes to auto save files to cfg

The functionality being added in this commit will allow certain files to
be automatically saved to /cfg when they are changed.

This will hopefully mean that changes made to the most important files are
never accidentally lost and also reduce the overhead of maintenance of the
/cfg as those files will be self-maintained.

This script is initially only monitoring files related to password, users
and groups.

It uses the wait_on script which in turn used kqueue.
imgbsdinit_late: Auto save changes in /usr/local/etc/gdm/home 2min after boot

This will save the user from having to initially add these files.
rc.conf: Adding acpi_call to list of kernel modules

Module mainly used for mobile computers and related to acpi in general. It
is being added here so that it is always available for any power saving
facilities.
Adding /etc/periodic.conf file to disable  periodic pkg backups

The default is for pkg databases in /var to be backed up to /var/backups.
This is not necessary as /var is a memory device and lost on reboot. It
also means that the backups with being unnecessarily consuming resources.
create-top.sh: Rename function from create_diskimage to create_image
create-top.sh: Rename variable from create_binary to compress_image
create-top.sh: Add special release functions

This will allow functions only required for releasing the project images to be removed for the
other code.
create-top.sh: Add special release functions

Adding additional user configurable function type (in addition to customise and late customise)
allowing functions to be created  that are run after all other steps have completed.

This is useful for defining specialist functionality outside of the scripts used specifically in the
release process, once the image has been created.
Change /var from a memory device to a tmpfs partition

Previously, /var was mounted as a memory device with a predefined size
(around 50MB). In some circumstances this would not be enough and would
result in a full partition. The longer a system was running the more
likely this event would occur.
To resolve this /var is now mounted as a tmpfs partition, giving many
times the previous size (depending on ram size which automatically
dictates the size of the tmpfs partition).

This will also result in more available ram as previously 50MB was
reserved for the partition, regardless of how full the partition was. Now
the partition will only use as much as is stored on it, and due to tmpfs's
ability to also use available swap the possibility of running out of space
on /var has been significantly reduced.

Currently the rc.initdiskless script has been altered and added to the
Files directory. This is not ideal. The changes will be later turned into
a patch and applied during the build process when a patch facility has
been added to the build system.
create-top.sh: Move variables out into user conf for better customisation

These variables are specific to different types of OS and should never
have been in the main top script and should always have been in the
individual projects conf.
create-top.sh: Format output to improve script output readability
Renaming the "img_update" script to just "img"

The img_update script has been renamed to just "img" to simplify the name,
making it easier to remember and allows for a broader range of tasks
relating to the image, not just updating.

The "switch" command has also been renamed to "recover" as it more
accurately describes what it does, moves back to the other image. "Switch"
will be reintroduced but with more functionality to handle switching back
and forth better.