Implement ppx syntax extension.

Initial patch by Drup.