Add support for underscores in Config names.

This patch allows use of underscores in Config platform, toolset,
variant, and subvariant names. This is primarily useful for the
platform names when needing to support a wide variety of cross-
compilation targets or for autoconf integration, but it can't
hurt for toolset, variant, or subvariant names. It makes it easier
to simply convert a canonical autoconf host/target triplet from
hyphen to underscore form and use it as the platform identifier.

For example, in your tundra.lua:

Configs = {
    Config { Name = "arm_linux_gnu-gcc", ... },
    Config { Name = "i686_linux_gnu-gcc", ... },
    Config { Name = "x86_64_linux_gnu-gcc", ... },
    Config { Name = "powerpc_linux_gnu-gcc", ... },
    Config { Name = "powerpc64_linux_gnu-gcc", ... },
    Config { Name = "i686_linux_gnu-clang", ... },
    Config { Name = "x86_64_linux_gnu-clang", ... },
    Config { Name = "arm_linux_uclibc-gcc", ... },
    Config { Name = "i686_linux_uclibc-gcc", ... },
    Config { Name = "x86_64_linux_uclibc-gcc", ... },
    Config { Name = "arm_linux_androideabi-gcc", ... },
    ...
}
WIP: first working version with newlib + nacl

Problems:
1. User has to name his executable well to avoid errors with google's tools
2. glib not supported
3. Variant not really set correctly (object dir does not state which one we build)
4. All variants should be built?
minor cosmetic change
added syntax nodes for NaCL

NaCL Manifest will produce a .nmf file from its dependencies (which must be Program(s))
allow building x86_32 or x86_64
WIP: support for glibc

Support for glibc toolchain. However if you attempt to build a manifest from programs with different toolchains, it won't detect the discrepancy.