Opposed piston opposed cylinder engine (OPOC)