Fixed error checking for missing implicit args

I removed the code that adds implicit args even when _ is missing, but didn't
add a check to make sure the number of args was correct. This resulted in
allowing through bad function calls.
Better header hygiene
Added a test for usage of the old implicit args syntax