More improvements to the shell (WIP)

- file masks ('*' and '?' are now accepted)
- recursive operations for ls/cp
- new FS-specific functions (src/common_fs.c)
added MMCFS emulation under the simulator
Adding rm and rmdir commands to the shell (WIP)
'mv' command and shell code refactoring

There is a new command in the shell ('mv' - move/rename files).
Also, the shell code was refactored into its own directory (src/shell).
The 'help' command in the shell was updated and supports 'help <command>'.
There is a new BUILD_ADVANCED_SHELL build time macro that enables the
advanced shell features (currently 'cp' with recursion (and other improvements),
'mv' and 'rm').
shell fix for shell_recv
Small memory optimization in Lua strings

Get rid of the "reserved" byte in the TString data type. Might actually
save more than one byte, depdending on the compiler structure alignment
rules (and the architecture). Tested with the Lua 5.1 test suite.
Lua-based build system improvements

The build system now accepts a single C file as a target and compiles that
file only. For example:

$ lua build_elua.lua board=ek-lm3s8962 src/main.c

Two other switches were added to the build sysem (both of which work only
with the single file target shown above):

"-E": preprocess file instead of compiling it
"-S": generate assembler source for the file instead of compiling it
Shell commands are now callable from the 'elua' module

Simply use 'elua.shell( <command> )', for example:

elua.shell( "ls /rom" )

In called like this, "lua" and "exit" are disallowed.
Added support for multiple SD cards

The MMCFS implementation can now handle more than one MMC card. To
use this feature, define these macros in platform_conf.h:

MMCFS_NUM_CARDS - the total number of cards
MMCFS_CS_PORT_ARRAY - array of CS ports
MMCFS_CS_PIN_ARRAY - array of CS pins
MMCFS_SPI_NUM_ARRAY - array of SPI port numbers

For example:
 #define MMCFS_NUM_CARDS          2
 #define MMCFS_CS_PORT_ARRAY      { 7, 2 }
 #define MMCFS_CS_PIN_ARRAY       { 0, 5 }
 #define MMCFS_SPI_NUM_ARRAY      { 0, 0 }

defines a system with 2 MMC cards. The first one uses SPI0 and has its
CS on PG0. The second one also uses SPI0 (this is perfectly possible)
but has its CS on PC5. This was the configuration used to test this
feature on a EK-LM3S8962 board.
Style changes

- remove stray printf
- use a consistent naming scheme for MMCFS_NUM_CARDS
updated documentation about multiple SD card support
don't include cmn_fs* functions in basic shell mode
fixed invalid return value in cmn_fs_get_type
small style changes
fixed potential double dm_closedir calls
Working on the documentation for the new shell commands

- "using.html" converted to AsciiDoc mode
- the shell documentation was split in a separate file and divided into
  two parts: docs for the simple shell and for the advanced shell
  (yet to be written)
improved file type reporting
added documentation about the advanced shell
removed the (mostly useless) BUILD_DIR option from the Lua based builder
remove BUILD_DIR from cross-lua.lua too