Mathematical programs with vanishing constraints: critical point theory