pub fn validate(program: &IrProgram) -> Result<(), Vec<ValidationError>>
Validate an entire IrProgram. Returns all errors found (does not stop at first).