Vectorize game_of_life with pnacl

Required converting an int8 -> int32 cast to scalar code
Changed expr_uses_vars back to using a custom visitor. This is because we need to dive into bound variables from the linear solvers scope, so the visitor in ExprUsesVars is not sufficient.
Merge branch 'scoped_expr_uses_vars' into linear_solver
After merging in scoped_expr_uses_vars branch, changed has_vars method to use expr_uses_vars and deleted custom visitor.
Added EXPORT macro to linear solver functions. Grouped comments and made them readable by doxygen.
Added BranchUtils.h/.cpp files that contain several visitors and mutators used by the specialize_branched_loops optimization pass. I have pulled this work out into its own file to improve the readability of the specialize_branched_loops stuff, and make it easier to test and review these components.
Fixed compile errors in BranchUtils. Added the beginnings of a correctness test to check the validity of the functions in BranchUtils.
Added some tests to check the correctness of the normalize and prune functions in BranchUtils.
Add some braces.
Merge branch 'master' of github.com:halide/Halide
Add ability to inject custom lowering passes from user code

Can be used for application-specific munging or checking (e.g. assert
that there are no vector scatters). Will be useful for tests in general.
Add test for custom lowering passes.
Fixed generation of shift operators in OpenCL C for vector types.
Added test for vectorized div/mod in GPU targets.
Merge master
Merge pull request #544 from halide/linear_solver

Changed expr_uses_vars back to using a custom visitor.
Changed the names of the BranchUtils files to BranchVisitors. Added some more comments to BranchVisitors.cpp file at the top of each class to indicate what it does. Rearrange the order of the functions and visitors in the file to match the order in which they are intended to be used. Also, fixed a minor but important bug that could potentially lead to infinite loops when a select expr was found in the condition of an if stmt.
Merge master
Fixed some compile errors that shouldn't have made it in the last commit.
Merge branch 'master' into branch_utils