Clean up meme lexical scoping code to be less of a hack

--HG--
extra : amend_source : 2a0512d332f490268afadc65ca0525b4f08d2c57
Made meme declarations without specified parameters have an arity of -1

(Allow arguments to be passed, but ignore them)
Don't pass ConstantScope and VariableScope to declare_meme
The main Component of a declaration is now known as :main
Update parser specs to account for move from [:args] to [:args,:*] for memes with no arguments specified

--HG--
extra : amend_source : 5b5a48adea1179bf162fd124bdc2d8e3d535950a
Support parsing of empty category declarations
Added Meme#to_proc