Add method to clear `WRITEABLE` flag from `PyArray`
The PyReadwriteArray understands the flag during the dynamic borrow checking, this just adds a way to set it on an array as well. This is a safe subset of what can be achieved unsafely by mutating the flags field on some *mut PyArray.
The discussion in #456 suggested having the method return a PyReadonlyArray. I feel like I might be missing something very obvious here, but I couldn't spot an existing way to consume an exclusive reference into a shared one. I added a From impl and then used that for now, but happy to switch it to a better version if one already exists, or drop it if we decide we don't want users to always pay the cost of re-acquiring the shared borrow (maybe there's some mem::forget shenanigans in conjunction with an extra "switch in place" operation that could be added to Shared to reduce the cost).