One thing that might help on the convex hull matching question is to do it
manually on the matched data:
z.out<-zelig(treatment~X, data=match.out, model="logit")
x.out<-setx(z.out, fn=NULL)
library(WhatIf)
summary(whatif(data=z.out, cfact=x.out))
This tells you if the counterfactual for the observations in the mathched
dataset are inside the convex hull one by one...