[nic] Propagate the concept of mode up to NICType, and allow it to be overridden. Modes default to 0644 for files and 0755 for directories unless overridden by a subclass or the user. Move the tarfile stuff in the NICTar:: packages to "_TarMixin", which wraps _mode and tarfile.

From: Dustin L. Howett <dustin@howett.net>

git-svn-id: http://svn.howett.net/svn/theos/trunk@553 4410221e-0ddf-4ce3-99c0-2db6c0dbc727
[nic] Move ::File's responsibility for handling data to NICBase::File and override ::data() in NICTar::File, making data overridable for NICTar file entries and removing NIC1::File.

From: Dustin L. Howett <dustin@howett.net>

git-svn-id: http://svn.howett.net/svn/theos/trunk@554 4410221e-0ddf-4ce3-99c0-2db6c0dbc727
[nic] Use a template's filename (plus '(unnamed template)') as a stand-in for the name, as NIC1 files do not require names.

From: Dustin L. Howett <dustin@howett.net>

git-svn-id: http://svn.howett.net/svn/theos/trunk@555 4410221e-0ddf-4ce3-99c0-2db6c0dbc727
[nic] Only load a template passed on the commandline if it exists and is a regular file.

From: Dustin L. Howett <dustin@howett.net>

git-svn-id: http://svn.howett.net/svn/theos/trunk@556 4410221e-0ddf-4ce3-99c0-2db6c0dbc727
[nic] Add _getContentWithoutCreate (awful, awful name), which - unlike _getContext - does not create the NICType it looks up.

From: Dustin L. Howett <dustin@howett.net>

git-svn-id: http://svn.howett.net/svn/theos/trunk@557 4410221e-0ddf-4ce3-99c0-2db6c0dbc727
[nic] Make nic 'use strict;', and add some stringification niceness to NICTypes. Move prompting into its own function, nicPrompt, which now supports variable-less prompts.

From: Dustin L. Howett <dustin@howett.net>

git-svn-id: http://svn.howett.net/svn/theos/trunk@558 4410221e-0ddf-4ce3-99c0-2db6c0dbc727
[nic] Add the NIC::Tie::* packages, which provide some tied variable classes.

From: Dustin L. Howett <dustin@howett.net>

git-svn-id: http://svn.howett.net/svn/theos/trunk@559 4410221e-0ddf-4ce3-99c0-2db6c0dbc727
[nic] Add support for package control scripts.

Only NICTar supports control scripts, at the moment, and only in
"NIC/control.pl".

This is implemented via a set of "scripting bridge" objects and the use
of eval. A context executes the script, providing a subroutine called
'NIC' that gives quick access to a NIC::Bridge::NICBase.

From that Bridged NICBase, the script can make files/folders/symlinks,
get access to bridged versions of NICType objects, print out status info,
read variables, and prompt the user for more information.

API documentation to follow.

From: Dustin L. Howett <dustin@howett.net>

git-svn-id: http://svn.howett.net/svn/theos/trunk@560 4410221e-0ddf-4ce3-99c0-2db6c0dbc727
[nic] ::exec() should return 1 if there was no control script lest we break every template that does NOT have such a script. Which we did. Sorry!

From: Dustin L. Howett <dustin.howett@airbnb.com>

git-svn-id: http://svn.howett.net/svn/theos/trunk@561 4410221e-0ddf-4ce3-99c0-2db6c0dbc727
[nic] Make _wrap work on an entire list, and add _unwrap, its opposite. Add NIC::Bridge::Tie::WrappedMethod, which is like a NIC::Tie::Method which wraps on fetch and unwraps on set.

From: Dustin L. Howett <dustin@howett.net>

git-svn-id: http://svn.howett.net/svn/theos/trunk@562 4410221e-0ddf-4ce3-99c0-2db6c0dbc727
[nic] Make symlinks take references to other NICType objects as targets. This allows symlinks to automatically update their targets when their targets are renamed. Wrap and unwrap the targets across the NIC Bridge, and add support for targeting a simple string that does not map to an existing file.

From: Dustin L. Howett <dustin@howett.net>

git-svn-id: http://svn.howett.net/svn/theos/trunk@563 4410221e-0ddf-4ce3-99c0-2db6c0dbc727
[nic] Use List::Util::first to simplify list item lookups. Other stylistic fixes.

From: Dustin L. Howett <dustin@howett.net>

git-svn-id: http://svn.howett.net/svn/theos/trunk@564 4410221e-0ddf-4ce3-99c0-2db6c0dbc727
[nic] Replace the hardcoded theos link with an optional theos link constrained to link_theos. @@THEOS@@ is set to 'theos', the name of the  link, when link_theos is on (as it is by default) and '$(THEOS)' when it is turned off.

Update all stock templates to use @@THEOS@@ in their Makefiles and
contain a constrained 'theos => @@THEOS_PATH@@' symlink.

Templates with no theos/ link in link_theos mode will get a courtesy
link with a warning. This behaviour can be turned off with the `ignore
THEOS` control directive.

From: Dustin L. Howett <dustin@howett.net>

git-svn-id: http://svn.howett.net/svn/theos/trunk@565 4410221e-0ddf-4ce3-99c0-2db6c0dbc727
[nic] Use File::Temp::tempdir instead of newdir (which only exists in File::Temp 0.19+). Clean up with File::Path::rmtree, which has existed since 2.04 or prior.

From: Dustin L. Howett <dustin@howett.net>

git-svn-id: http://svn.howett.net/svn/theos/trunk@566 4410221e-0ddf-4ce3-99c0-2db6c0dbc727
[nic] Add support for perl-5.10.0, which ships with File::Path 2.04. Update the NICType derivatives to use strict/warnings.

From: Dustin L. Howett <dustin@howett.net>

git-svn-id: http://svn.howett.net/svn/theos/trunk@567 4410221e-0ddf-4ce3-99c0-2db6c0dbc727
Update CaptainHook to support clang
Merge remote-tracking branch 'DHowett/master'