Split redstone and tick logic into their own files
Refactor redstone to return if it successfully executed
Refactor pistons to have different behavior when pushing and pulling