Do not modify `subject` when defining an `its` example

See the discussion at #768.

@myronmarston I've added some documentation and renamed the internal subject to `__its_subject` to avoid a potential (however unlikely) name conflict.

I'm also overriding the methods in-line, to keep the usages and definitions of `__its_subject` as close to each other as possible.

Let me know what you think.