Taking care of free shipping cart rule

Prerequisite:

A cart rule with free shipping that applies on some carriers.

Before : 

The default carrier in order_carrier.tpl was selected without taking care about cart rule. So if we choose that the default carrier is the best priced one, the selected carrier can not be free, despite the fact that there are free carriers in the list.
Also the shipping cost in block cart was not always free. Same thing for the order summary.
Also, the "Best Price" label on order_carrier.tpl can be on a non-free carrier instead of the free ones.

After :

getPackageShippingCost return 0 if a cart rule with free shipping cost applies to the carrier.
If a cart rule with free shipping applies to a carrier, the blockcart show free shipping, and the summary too.
The "Best Price" label shows up on a free carrier.