Refactor var arg macros into a stdarg header

The va_list typedef and va_start(), va_arg() and va_end() macros have
been refactored from <nos/util.h> into a new header file
<nos/stdard.h>. The macro comments are adapted from the Linux man-pages
project, available:
    http://www.kernel.org/doc/man-pages

Additionally, va_copy() has been defined for completeness.
Add a virtual filesystem implementation

This VFS implementation uses a node graph design, with a common node
interface:

    1) Open    - Open node as a file descriptor.
    2) Close   - Close node.
    3) Read    - Read data from node.
    4) Write   - Write data to node.
    5) Readdir - return the nth child node of the current directory.
    6) Finddir - find a child node from a string pattern.

Based on James Molloy's Kernel Development Tutorials, available here:
    http://www.jamesmolloy.co.uk/tutorial_html/8.-The%20VFS%20and%20the%20initrd.html
Reorganise build time configuration

This patch prevents the top level Makefile from setting compilation and
link settings which are not appropriate for all types of build.
main: Fix compiler warnings
Add an initrd generator

The initrd-gen program generates an initrd.img file from a list of
command arguments. Files are specified in path/name couplets, where path
is the local file path, and name specifies the name of the file in the
generated initrd. For example:

  $ initrd-gen ~/foo foo ~/bar bar

generates an initrd.img file containing the files foo and bar. Based on
James Molloys kernel development tutorials, available here:
    http://www.jamesmolloy.co.uk/tutorial_html/8.-The%20VFS%20and%20the%20initrd.html
Adds assert and panic header files

This patch adds two new header files, <nos/assert.h> and <nos/panic.h>,
with the intention of offloading some of the work from <nos/util.h> into
a more specific function-orientated header structure.