Automatic Distributed-Memory Parallelization and Code Generation using the Polyhedral Framework