server: buildfile: added macros to Dockerfiles

This patch adds macro substitution to Dockerfiles, as well as the "SET" directive.
This is an incomplete patchset (-D flags and proper documentation still need to be added).
This patch *may* break compatibility with Dockerfiles wthat rely on the '$' being non-special.

Basically, macros work like this:

1. You can SET them, or (in the next few patches) add them using the -D flag.
2. Any reference to the macro (in the form $VARNAME) will be replaced with the value
   of the macro.
3. ... unless the macro is in a single-quoted string.
4. ... if the macro is unknown, it is untouched by the substitution. (this is to
   preserve a modicum of compatibility with older Dockerfiles)

This patch will build old Dockerfiles with no problems (unless they use the '$$' special
symbol -- which will be replaced by '$')

Docker-DCO-1.1-Signed-off-by: Aleksa Sarai <cyphar@cyphar.com> (github: cyphar)