Basic string variable support

This adds support for string variables to the data model and parser.

In recipe files, you can do things like

    FOOBAR = 'foo'
    FOOBAR.append('bar')
and
    FOO = 'foo'
    FOOBAR = String('%sbar'%(FOO))

which both will result in FOOBAR variable being 'foobar'.

Signed-off-by: Esben Haabendal <esben@haabendal.dk>
tests: Add test recipe for string parser

Signed-off-by: Esben Haabendal <esben@haabendal.dk>
Add parser unittests

Signed-off-by: Esben Haabendal <esben@haabendal.dk>
Fix parser default output handling

To be compatible with unittest sys.stdout mocking, evaluation of sys.stdout
must be delayed to when the function is called.

Signed-off-by: Esben Haabendal <esben@haabendal.dk>
Add unittests for show command

Signed-off-by: Esben Haabendal <esben@haabendal.dk>