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)