message: hash cfg
  Summary: Ever since we allowed `is_editable_cfg_friendly`, hashing of method bodies stopped fully working, as the existing hasher code only looked at IRCode, but not cfgs. This is getting fixed here.
diff: @@ -49,6 +49,7 @@ class Impl final {
  void hash(uint8_t value);
  void hash(bool value);
  void hash(const IRCode* c);
  + void hash(const cfg::ControlFlowGraph& cfg);
  void hash_code_init(
  IRList::const_iterator begin,
  IRList::const_iterator end,
  @@ -212,17 +213,55 @@ void Impl::hash(const IRCode* c) {
  auto old_hash = m_hash;
  m_hash = 0;
  + if (c->editable_cfg_built()) {
  + hash(c->cfg());
  + } else {
  hash(c->get_registers_size());
  +
  std::unordered_map<const MethodItemEntry*, uint32_t> mie_ids;
  std::unordered_map<DexPosition*, uint32_t> pos_ids;
  hash_code_init(c->begin(), c->end(), &mie_ids, &pos_ids);
  hash_code_flush(c->begin(), c->end(), mie_ids, pos_ids);
  + }
  boost::hash_combine(m_code_hash, m_hash);
  m_hash = old_hash;
  }
  +void Impl::hash(const cfg::ControlFlowGraph& cfg) {
  + hash(cfg.get_registers_size());
  + hash(cfg.entry_block()->id());
  + std::unordered_map<const MethodItemEntry*, uint32_t> mie_ids;
  + std::unordered_map<DexPosition*, uint32_t> pos_ids;
  + for (auto b : cfg.blocks()) {
  + auto id = (uint32_t)b->id();
  + hash_code_init(b->begin(), b->end(), &mie_ids, &pos_ids);
  + for (auto e : b->succs()) {
  + hash((uint32_t)e->target()->id());
  + hash((uint8_t)e->type());
  + if (e->type() == cfg::EDGE_THROW) {
  + auto throw_info = e->throw_info();
  + hash(throw_info->index);
  + if (throw_info->catch_type) {
  + hash(throw_info->catch_type);
  + }
  + continue;
  + }
  + auto case_key = e->case_key();
  + if (case_key) {
  + hash((uint32_t)*case_key);
  + }
  + }
  + }
  + // mie-ids would only be generated by MethodItemEntries that are not present
  + // in editable cfgs.
  + always_assert(mie_ids.empty());
  + for (auto b : cfg.blocks()) {
  + hash_code_flush(b->begin(), b->end(), mie_ids, pos_ids);
  + }
  +}
  +
  void Impl::hash_code_init(
  IRList::const_iterator begin,
  IRList::const_iterator end,
  