Derive Syntax from ast-types instead of esprima.

This is a first step towards making esprima dependency-injectable.