Add skeletal client and api.AddKnownTypes method

Do you think it makes more sense to expose RegisterStorage and let other source files call it, or should we just consolidate registration to just here, in which case we could not expose RegisterStorage?