Add skeleton for UI (Node + TypeScript + WASM  + build integration)

This CL checks in a basic skeleton to develop the UI, introducing
- NodeJS binary, pulled in via tools/install-build-deps --ui
- WASM toolchain
- TypeScript compiler
- Protobuf.js library dependency
- Basic build file plumbing
- ui/run-dev-server

For the moment, it just introduced a hello world TypeScript file
that loads a hello world WASM library.
All it takes to build and bundle everything is:
$ ninja -C out/xxx ui
$ ui/run-dev-server

Bug: 73626618
Change-Id: I44a628c3dc8b36d1e9267f43f25f256761c7e90f
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 1491f5e..7168e8f 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -19,7 +19,7 @@
     # There apparently is no way to wrap strings in blueprints, so ignore long
     # lines in them.
     long_line_sources = lambda x: input.FilterSourceFile(
-            x, white_list=".*", black_list=['Android[.]bp'])
+            x, white_list=".*", black_list=['Android[.]bp', '.*[.]json$'])
     results = []
     results += input.canned_checks.CheckDoNotSubmit(input, output)
     results += input.canned_checks.CheckChangeHasNoTabs(input, output)