Nawiązując więc do pytań...
ad 1) Jeśli wywołujesz określony Widok, to z reguły Kontroler wie o tym, czego on potrzebuje i takie funkcje Modelu/Modeli wywołuje by uzyskać wymagane dane. Jako że zdarzają się inteligentne, interaktywne Widoki to można oczywiście spotkać sytuacje, gdy w jego wnętrzu będzie wywołanie określonej metody, określonego modelu obwarowanego warunkami zapewne. Ale jest to wtedy gmatwanie Widoku celem uproszczenia Kontrolera. Przenosimy więc to co by było w Kontrolerze do wnętrza Widoku - nic więcej. To co proponujesz to faktycznie MVP, ale widzę, że chęć uniezależnienia Widoku od Kontrolera skłania Cię do myślenia kategoriami nie MVP, ale MVC własnie, bo tak zachowują się normalnie aplikacje desktopowe. A skąd Model ma wiedzieć czy jest stopka czy nie? Ano ma mu to w tym wypadku jasno i klarownie Prezenter powiedzieć

ad2) Model to warstwa danych i ich obróbki. Każda część MVC ma swoje własne zadania i cele. Najprościej ujmując:
Kontroler obsługuje żądanie i decyduje co należy zrobić, a więc jaki Widok i/lub Model wywołać.
Model służy do interakcji z danymi oraz ich obróbką. Dowolnego typu i pochodzenia. Nieważne czy to będzie plik, RDBMS, stream czy cokolwiek innego. On sie zajmuje tylko źródłem danych i jego ewentualnym przetworzeniem do wymaganego formatu.
Widok to warstwa odpowiedzialna za prezentację danych. Może to być strona, ale także odpowiednio sformatowany XML wypełniony przygotowanymi przez Model danymi czy jakaś faktura pdf.
Wiele osób bardzo często myli zadania tych 3 warstw przeplatając je między sobą. Zauważ, że wywołanie Kontrolera poprzez router już mu nakazuje pewne rzeczy i można określić czy pewne elementy będą czy też nie. To wystarcza by Kontroler wywołał odpowiedni Widok i tym samym wiedział co tenże Widok potrzebuje, a czego nie. Dzięki temu wie jaki Model wywołać i o co go poprosić by potem do Widoku wysłać.
A czym powinien być Model? Warstwą, która udostępnia mechanizmy operujące na danych w sposób niezalezny od tego co "w bebechach". Zauważ, że możesz pracować raz na plikach, innym razem na bazie, a jeszcze innym razem na zasobach sieciowych gdzieś na krańcu świata. Dla Ciebie nie powinno być ważne z czym masz do czynienia i interfejs powinien być jednolity. Jeśli coś chcesz pobrać i zapisać, to nie powinieneś z góry userowi dać metod zapiszHtml, zapiszPdf, zapiszCośTam tylko jednolite Zapisz. To Model na podstawie kontekstu powinien się sam połapać co ma zrobić i w tym względzie jest ORMem, ale Model to nie tylko to. ORM jest tylko jedną z "implementacji" Modelu i sam Model ma znacznie szerszy zakres zadań. On powinien obsługiwać wszelkie zadania związane z pobieraniem, konwertowaniem, zwracaniem danych w dowolnym formacie na żądanie Widoku lub Kontrolera.