Clean up ObjectData::getProp(), remove ObjectData::zGetProp()

Summary: getProp() was taking three bool& parameters: visible, accessible, and
unset. Turns out, only accessible is needed, as visible is the same as checking
propTV != nullptr, and unset is propTV->m_type == KindOfUninit.

This diff makes a struct PropLookup that matches Class::PropLookup, and returns
it by value from getProp().

ObjectData::zGetProp() was breaking my logic for "unset", because we can't box
an uninit typed value, but it only has one callsite. So I just inlined it, which
let me handle the uninit case.

Reviewed By: @bertmaher

Differential Revision: D1711594

Signature: t1:1711594:1417738687:033471c39c5cdc2f1410a138d3c35888cdf90434