added object interface enumerator

the enumerator yields the object's current interface.  it is split into
a length getter and a vector getter.  the length is requested first,
then followed by the the vector.  The reason is to allow use of the
callback system which requires the length of things to be known in
advance.  Note: if you get a endpoint data race (something adds a new
interface method serverside between the client calling GetIFaceSize and
GetInterface) the result will be extra interface elements left on the
result stack.  There's isn't much of a solution to the issue other than
to reset the result stack to empty in the callback after processing the
vector (thus do not rely on it left on the stack for a subsequent
operation).  The interface is only ever appended to, never deleted from
so handling the data race in this manner will always have a valid
interface on part of the endpoint that just used
GetIfaceSize/GetInterface.  It just will not see the "future" contract
addendum. Eventually contract expansion will be handled in a better
manner using notifiers on the bootstrap root objects that fire on
contract modification.