Move amend() and amend_if() methods to Variable

They should be reusable for non-sequence type classes as well.

Signed-off-by: Esben Haabendal <esben@haabendal.dk>
Add support for Expression in List elements

This will allow constructions such as

FILES = ['%s/libfoo.so'%(libdir)]

Signed-off-by: Esben Haabendal <esben@haabendal.dk>
Add Dict variable support

In recipe context, you can do stuff like:

    FILES = {}
    FILES['package-foo'] = ['%s/foo'%(bindir), '%s/foo'%(libdir)]
    FILES['package-bar'] = ['%s/bar'%(bindir)]
    FILES_HELLO = ['%s/hello'%(bindir)]
    FILES.update_if(HELLO, {'package-hello': FILES_HELLO})
    HELLO = True
    bindir = '/usr/bin'
    libdir = '/usr/lib'

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