v-repeat optimization

- When the array is swapped, will reuse existing VM for any
  element present in the old array. This greatly improves
  performance when the repeated VMs have a complicated
  nested structure themselves.
- Fixed issue when array is swapped new length is not emitted
- Fixed v-if not removing its reference comment node when unbound
- Fixed transition when element is invisible the transitionend
  callback is never fired resulting in element stuck in DOM