Viele Themen, ich versuch mal in Deiner Reihenfolge drauf zu antworten:
1.) OBD-Framework
Aus meiner Sicht muss die Kommunikation mit dem Adapter intern über einen Treiber laufen. Dieser übersetzt den Programmbefehl in einen Adapter-Befehl. Z.B. wenn ein ELM327 angeschlossen ist den Programmbefehl "Setze Baudrate auf 125 KBaud und aktiviere den MS-CAN Bus" zu "RTS ON + ATSPB". Und wenn ein STN11xx angeschlossen ist dann eben in "STP 53".
Die eigentliche Übermittlung der Daten sollte asynchron als Hintergrundprozess laufen. Ebenso und auch unabhängig davon der Empfang von Daten und Rückmeldungen. Dazu zählt auch das möglicherweise fragmentieren und defragmentieren von größeren Datenströmen. Die Kommunikationsschicht setzt dann alles richtig zusammen.
Aber je stabiler und besser die Schnittstelle intern definiert ist desto leichter lassen sich Higherlevel Services darauf aufschalten. Und bloß eine weitere Terminalemulation braucht echt keiner. Wenn dann reden wir direkt über ELM/STN Befehle. Logging, Tracing, Record und Playback natürlich eingeschlossen. Und wenn man ganz cool ist erweitert man diese Funktionen um externe Dateien und kann somit auch Skripte ausführen. Bis hier hin ist es schonmal ganz schön viel Arbeit.
Somit stellt sich dann auch nicht die Frage was man damit alles anfangen könnte, denn das ergibt sich dann von ganz allein 
2.) Wenn Du noch nie eine App entwickelt hast ist dieses Projekt eine Nummer zu groß. Ich schätze Du brauchst ca. 1-2 Jahre bis Du darin einigermaßen fit bist. Abgesehen davon musst Du für Apps auch einiges an Geld in die Hand nehmen, sonst kannst Du die hinterher bestenfalls auf gerooteten Geräten installieren. Diese Idee würde ich erstmal zurückstellen. Mit was programmierst Du denn jetzt gerade und auf welcher Plattform? Hast Du eine Entwicklerlizenz bei Microsoft und kannst somit auch signierte Programme erstellen?
3.) Zum Sniffer
Mir erklärt sich das nur dann, wenn Du dem Sniffer einen Filter verpasst hast und wirklich nur nach "AT" suchtest. Denn dann ist der Grund das ForScan einfach gleich erkannt hat das es sich nicht um einen ELM sondern einen STN handelte und mit diesem ausschließlich mit "ST" Kommandos gearbeitet hat. Eine andere Erklärung könnte natürlich sein das der ForScan garnicht auf den virtuellen COM-Port connected, sondern über die Geräteliste von Windows gleich den Adapter erkennt und sich über die Windows-API dort anbindet. In dem Fall bekämst Du auch bei einem Sniffer ohne Filter nichts mit.
4.) Zur Baudrate
Mein TRE27 war auf 2 MBaud eingestellt. War garnicht so einfach erstmal ein Terminalprogramm zu finden bei dem man das auswählen kann! Bei den meisten ist bei 115200 Baud schluß, spätestens jedoch bei 900irgendwas. Für die Baudrate gibt es einen Default und ein AT/ST Kommando um diese zu ändern. Den Default kann man ebenfalls ändern (sieh "AT PP ...") und auch dauerhaft speichern. Bei direkt Zugriff über die API vom Treiber muss man sich aber über Baudraten keine Gedanken machen 
5.) Gefahrlos am CAN-Bus spielen...
Na, das ist schlichtweg nicht drin. Der CAN ist kein Spielplatz und auch kein Internet. Dort ist alles auf die reine Aufgabe designed. Da reicht schon ein falsch angeschlossener Adapter und Du hast nur noch "Motorstörung" im Display blinken. Das einzige was gefahrlos geht ist Read-Only lauschen und sich ggf. selbst irgendwelche Aktionen oder Darstellungen von den gelesenen Werten zu machen. Eine Liste oder gar irgendwelche Unterlagen vom Hersteller gibt es nicht, ausser Du machst sie dir selbst. Die hüten die Hersteller wie ihren Augapfel.
Senden würde ich jedem erst dann empfehlen wenn er genau weiss was er da tut. Das hat auch noch ein weiteres Problem zur Folge, das man aber nur versteht wenn man die Basics von CAN kennt was ich jedem, auch Dir nur dringend ans Herz legen kann. Ein CAN-Bus wird ganz anders verwendet wie z.B. ein Computernetzwerk. Hier mal exclusiv ein Mini-Exkurs für Dich ins Thema:
- Auf dem CAN gibt es keine Empfänger oder Senderadressen, der CAN ist Nachrichtenorientiert.
- Die Zuordnung, welches Steuermodul auf welchem Bus welche IDs sendet ist rein vom Hersteller bestimmt.
- Der CAN arbeitet nach dem CSMA/CA Verfahren, er vermeidet also Bus-Kollisionen durch geeignete Methoden in der Hardware
- Jede Nachricht hat eine ID (die CAN-ID) und Nutzdaten.
- Im Mondeo MK4 arbeiten wir nur mit dem Standard-CAN, also 11-Bit CAN-ID und max. 8 Byte variable Nutzlast (DLC kontrolliert).
- Die ID, der Inhalt und Aufbau der Nachricht ist grundsätzlich frei definierbar, außer man verwendet eine bereits festgelegte Definition wie eine der zahlreichen ISO-Protokolle.
- CAN-Botschaften werden oft periodisch gesendet auch wenn sich deren Inhalt nicht ändert. Die Periode orientiert sich an der Wichtigkeit und Änderungsfähigkeit der Nachricht. Hintergrund dabei ist das damit auch eine Präsenz angezeigt wird und andere Module entsprechend darauf reagieren können. Die Periode liegt beim Mondeo zwischen 10 ms und 1000 ms. Es gibt einige wenige, bei einem bestimmten Ereignis nur einmalig auftrentende CAN-Botschaften.
- Versucht man also eine Nachricht mit einer ID zu senden die bereits von einem anderen Modul periodisch gesendet wird ist es sehr wahrscheinlich das Kollisionen entstehen und die eigenen Daten dadurch nicht empfangen werden. Bzw. das Empfänger die Daten verwerfen weil sie gleich danach wieder von einer Original-Nachricht überschrieben werden. Oder sich ein Modul abschaltet weil es ständig sich unplausibel ändernde Werte erhält. Auch gibt es Module die Änderungen nur sehr langsam aufnehmen (Integral) wie z.B. die Außentemperatur.
- Es ist also nicht nur notwendig die IDs und die Bedeutung ihrer Daten zu kennen, sondern auch wie diese von den Steuergeräten verarbeitet werden und welche Wechselwirkungen sich daraus ergeben.
6.) Aktivieren von Funktionen (Start/Stop, Standheizung)
Das ist alles andere als einfach. Denn hier ist es nicht mit einem senden einer einzelnen CAN-Botschaft getan. Letztlich sind beide genannten Dinge Änderungen in der Fahrzeugkonfiguration. Um diese Änderung durchzuführen ist eine UDS-Sitzung (Programmier-Sitzung) notwendig, inkl. einer Software die auf das Steuergerät geladen wird und die Änderungen übernimmt und ausführt (2nd Stage Bootloader). Das ist kein Kindergeburtstag sondern da muss man sich schon echt gut auskennen. Allein erstmal den Seed-Key Schutz knacken um überhaupt eine solche Kommunikation aufzubauen. Dann die ganzen Interna von Ford zu kennen, denn die UDS-Befehle sind nur zum Teil genormt, jeder Hersteller macht da so sein eigen Ding.
So ganz ohne Konzept einfach mal so drauf losprogrammieren halte ich für den denkbar schlechtesten Ansatz. Du bist doch Programmierer? Hast das womöglich sogar gelernt? Und das was Du da schreibst ist ganz klar ein Anti-Pattern für mich und da prophezeihe ich Dir jetzt schon das Du nicht weit kommen wirst und zwischendurch ein paarmal von vorn anfangen musst...
Damit will ich Dich nicht demotivieren, nur helfen, denn ich fürchte Du unterschätzt die Komplexität der Sache noch.