Type check when upcasting PassRefPtr and avoid instantiation for invalid pointer casts.

This is to address currently required ptr.get() on toV8() calls. As there are many overrides for toV8(const PassRefPtr<FooBar>&, ...), the caller has to call toV8(instance.get(), ...) explicitly as implicit conversions would not work as it can't decide which toV8() override to 
use.

This patch also ensures that const_pointer_cast is only used to add/remove const qualifier. The previous one allowed generic type cast too.

BUG=None

Review URL: https://chromiumcodereview.appspot.com/21735009

git-svn-id: svn://svn.chromium.org/blink/trunk@155661 bbb929c8-8fbe-4397-9dbb-9b2b20218538