datum+macro: replace r5js.Datum#isMacro with direct instanceof check.
datum+misc: rename r5js.MacroDatum => r5js.ast.Macro.
datum: put r5js.ast.Macro in its own file.
datum+misc: introduce r5js.ast.Vector, and use instead of newVectorDatum().
sibling_buffer: refactor toList() to make it easier to extend.
ast: change r5js.ast.Vector ctor to accommodate array-backed and "regular" vectors.
datum+misc: replace r5js.Datum#isVector with direct instanceof check.
datum: move vector-related methods from r5js.Datum => r5js.ast.Vector.
datum: remove now-empty namespace r5js.data.