Refactor build_artifacts.sh and makefile

- Move everything to .data, .vendor, .artifacts and .bin in order to cleanly separate build input and output.
- Sprinkle some subshells on build_artifacts.sh to make it fail more gracefully.
- Fix fetch_third_party.sh check.
- GOBUILD make helper.
- Dockerfile with build dependencies.

Test Plan:
Ran `make clean` and build steps described in README.md, it boots:

{P84}

X-Origin-Diff: phab/D195
GitOrigin-RevId: 4106534c7248931b79e93e2a13153482033cd0d8
6 files changed
tree: cb548c7e7a63df850302f6bb42a5a6bb3e5d2700
  1. cmd/
  2. internal/
  3. kernel/
  4. patches/
  5. pkg/
  6. scripts/
  7. .bazelversion
  8. README.md
README.md

Smalltown Operating System

Run build

The build uses a Fedora 30 base image with a set of dependencies:

modprobe kvm

podman build -t smalltown-builder .

podman run -it --rm \
    -v $(pwd):/work \
    -v /dev/null:/work/.git \
    -v /dev/null:/work/.idea \
    -v /dev/null:/work/.arcconfig \
    --device /dev/kvm \
    smalltown-builder bash

scripts/fetch_third_party.sh
scripts/build_artifacts.sh

make launch

Exit qemu using the monitor console: Ctrl-A c quit.

If your host is low on entropy, consider running rngd from rng-tools for development.