Funky Locomotion mod adds an advanced variant of the vanilla piston that can push a wide variety of blocks that the regular piston can’t (including tile entities, ‘heavy blocks’ such as obsidian and ‘soft blocks’ such as torches and dust). It just needs a redstone signal and a block update (that may be caused by the redstone signal) to move. There is also a variant of this that can ‘pull’ blocks towards it (but can’t push unlike the sticky piston). You can right-click a side to rotate the pusher to that direction.
It also adds ‘Frames’ which can connect together and ‘stick’ to adjacent blocks. When a frame is pushed/pulled, the entire structure it is connected with is pushed (provided there is room). You can right-click a side with a wrench to ‘close’ it and prevent frames from sticking to block or frame on that side. Note: this does not work both ways and a frame with an ‘open’ side will connect to a frame with a ‘closed’ side. The ‘open/closed’ settings are preserved when the block is broken.
Note: A Frame pusher/puller cannot move itself but it can move other Pusher/Pullers. Also Frames cannot connect to the front of a pusher/puller.