Fix handling of macros named '!'
Fix handling of macros named '!'

Previously Racer was very agressive about rejecting things that looked
like a macro named impl! However, this would result in Racer rejecting
legitimate impls like the following:

impl Inverter {
  pub fn invert(&self, b: bool) -> bool {
    !b
  }
}

fixes #716

phildawes/racer,alkama/racer,birkenfeld/racer,racer-rust/racer