Support multiple Linux kernel versions

The ONIE build environment was usable a very stable, but old, version
of the Linux kernel.  Many people have expressed interest in using a
different kernel.

This patch adds new infrastructure for supporting multiple kernel
versions.  This includes the following changes:

- Move the existing 3.2.35 kernel stg patch files in patches/kernel/*
  to patches/kernel/3.2.35.

- Move the existing 3.2.35 kernel configuration files in
  build-config/conf/linux.*.config to build-config/conf/kernel/3.2.35.

- Update the existing kernel.make and image.make Makefiles to reflect
  the new locations of the kernel configuration and patch files.
Support multiple versions of uClibc

This patch adds infrastructure to support multiple versions of uClibc.

The existing uClibc 0.9.32.1 configurations are moved from
build-config/conf/uclibc.*.config to build-config/conf/uclibc/0.9.32.1

The uclibc-download.make file is updated to reflect the new
configuration location.  Also the uClibc version now defaults to
0.9.32.1, but can be changed by a platform specific machine.make.
toolchain paths depend on kernel and uclibc version

In order to support multiple toolchains for multiple kernel and uClibc
versions the build paths must be unique.

This patch adds the kernel version and uClibc version to the build
paths.
Use stgit to patch crosstool-ng

Previously we were simply copying patches into the crosstool-ng build
directory.

This patch formalizes the crosstool-ng patching using stgit.
back port uClibc patch for use with Linux-3.4+

Back port "libc/sysdeps: add __kernel_long and __kernel_ulong" from
mainline crosstool-NG tree.

Comments from uClib git hash 7fef6b983456e4c529a5239ea90715050e6f4452
reproduced here:

  Linux 3.4 added __kernel_long_t and __kernel_ulong_t and various
  exported header files were updated to use these new types. Add the
  definitions for __kernel_long_t and __kernel_ulong_t to the relevant
  kernel_types.h headers.

  This change was automated with the following scriptlet

    git grep --name-only 'typedef.*__kernel_old_dev_t' \
      | xargs sed -i '/typedef.*__kernel_old_dev_t/ a\
    typedef long\t\t__kernel_long_t;\
    typedef unsigned long\t__kernel_ulong_t;'

  Whitespace in arm, avr32, hppa, sparc was then manually fixed up.

  Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
Move uClibc version selection into crosstool-ng

For historical reasons the ONIE project downloaded uClibc-0.9.32.1
outside of the crosstool-ng build process.  The crosstool-ng
configuration listed the uClibc version as "custom" and the custom
location of the tarball was specified separately.

That was fine for a start.

In preparation for opening up ONIE to other versions of uClibc the old
way does not scale anymore.

This patch does a few things:

1.  Specify the desired uClibc version *within* the crosstool-ng
    configuration file.  Allows crosstool-ng to manage the uClibc
    version.

2.  Move the existing crosstool-ng CPU architecture configuration
    files to a new location, based on the uClibc version.
Add support for the Linux kernel version 3.14.16

This patch adds default kernel configuration and patches for kernel
version 3.14.16.

The default kernel version remains at 3.2.35.

To use the 3.14.16 specify the kernel version in the platform specific
machine.make file:

  LINUX_VERSION		= 3.14
  LINUX_MINOR_VERSION	= 16
kvm_x86_64: Use Linux kernel version 3.14.16

For this platform default to using the 3.14.16 Linux kernel version.
xtools: add a xtools-distclean Makefile target

Add a new "xtools-distclean" target that is invoked from the top level
Makefile by the "distclean" target.

The xtools-distclean target removes all files under the $(XTOOLS_ROOT)
directory.  This is more thorough than the lighter weight
xtools-clean, which only removes the files for a single toolchain.

The xtools-distclean target removes all files for all toolchains.
Add support for uClibc version 0.9.33.2

The default uClibc version remains at 0.9.32.1.

To enable uClibc version 0.9.33.2 specify the UCLIBC_VERSION variable
in the platform specific machine.make:

  UCLIBC_VERSION = 0.9.33.2
kvm_x86_64: Use uClibc version 0.9.33.2

For this platform default to using the 0.9.33.2 uClibc version.
xtools: minor, refactor directory paths

Refactor the XTOOLS_DIR variable, creating the XTOOLS_VERSION variable
in the process.  Use the XTOOLS_VERSION variable to print more
meaningful progress messages.
Documentation:  Change code merge window to 8 weeks

Update the release cycle documentation to more accurately reflect
reality.  Before we had a merge window of 4 weeks, with 8 weeks of
testing.

More realistically at this stage of the project we allow new features
for 8 weeks with a stabilization window of 4 weeks.
Make MTD utilities be an optional tool in ONIE

MTD utilities are included by default. To disable the utilities,
just insert the line 'MTDUTILS_ENABLE = no' in machine.conf

Signed-off-by: Curt Brune <curt@cumulusnetworks.com>
Accton AS4600_54T: Revise demo OS image extension name in platform.conf

Signed-off-by: Curt Brune <curt@cumulusnetworks.com>
Accton AS6701_32X: Revise demo OS image extension name in platform.conf

Signed-off-by: Curt Brune <curt@cumulusnetworks.com>