affect join type through kwargs in opt_rules
test symmetric hash join
shuffle join test
remove self.join_type
myrialang: add implementation-specific assumption about HashJoin
TDD test for MyriaSymmetricHashJoin bug
PushApply: fix projectingjoin

Do not push into ProjectingJoin when it involves reordering columns
across left and right children.
Merge pull request #327 from uwescience/bmyerz/grappalang-join-type

Grappalang join_type and tests
algebra.Project: unnamed column list support
rules: ensure that projecting join always has left cols before right
Merge branch 'master' of https://github.com/uwescience/raco
lets start with the obvious stuff shall we? add metrics to includes
prepare the feature cannons with code dedup
fixup rules that turn Project into other things

Rename the rules and simplify them to make it more explicit what is going on.
nary_join_rules_test: fix typo
add per-gce metric
skip nary-join-tests

See #328
use grappa feature https://github.com/uwsampa/grappa/pull/184
flake
Datalog: produce Apply instead of Project

I'm sick of mapping Project to something without Duplicate elimination semantics.
The real solution is to make Datalog emit an Apply instead of a Project, since that
seems to be the desired semantics by the Datalog users. Then the rest of the rules
can make sense.