Regarding tonight's call that ended Game 3 of the World Series:
According to the rulebook, this was exactly the right call. The relevant rules are 2.00 (which defines obstruction) and 7.06 (which instructs the umpire on how to rule in the event of obstruction).
As per the rules, Will Middlebrooks was called for obstruction because the umpires ruled that he impeded Allen Craig's path. The definition of obstruction does not require any contact to be made, nor does the fact that Middlebrooks was in the process of fielding the ball apply: once the ball is past the fielder he no longer has a right to the base path.
Was there anything Middlebrooks could have done to get out of the way in time to avoid an obstruction call? Probably not. Was he doing what he should have been doing as a fielder in diving for the ball? Yes, probably.
But the rule states that, once the ball is by the fielder, any impedance or hindrance of the baserunner shall result in an extra base should he then try to proceed to that base. It's a textbook example of obstruction and a perfect execution of the call by the home plate umpire.