Now create IR nodes via a static ::make method instead of new

Pros:

No longer doing asserts in a constructor.
  Args are checked before memory is allocated.

Lets us return existing objects instead of creating new ones.
  E.g. to do things like cache small integers, or do eager
  constant folding. Nothing along these lines implemented yet.

Make methods can delegate to other make methods, reducing code duplication.
  Delegating constructors don't exist is C++ < 11.

Removes implicit casts caused by constructors that took one arg.
  The alternative would have been marking those constructors as explicit.

::make returns const pointers, new doesn't.
  Stops people from invalidating the internals post-construction

Cons:

Default constructor now exists and is public.
  We could make it private if it becomes a source of bugs, but I think
  it's nice to have an escape hatch if you want to construct an IR node
  in an unusual way. All IR node members (e.g. Expr) have safe default
  constructors anyway, so all the new default constructors are safe.
Merge branch 'master' into nick-sandbox