Backport PR #4008: Transform code before %prun/%%prun runs

This makes it so that prun works with IPython-specific syntax (e.g., `%prun %logon`).  This mirrors the change @fperez made in commit 3ac024c8b39300055bd515e9d88186049a30cdbe for the timeit magic.