Regarding the WiFi.begin() / WiFi.config() commands, three things spring to mind:
1) You can't use the WiFi.begin() command like you can on the ESP8266 Arduino due to how the oak is configured with persistent wifi and is configured with the SoftAP page
2) There is a WiFi.config() command... it just doesn't do what you want (WiFi.config(ip, gateway, subnet);)!!
3) The wifi config spoken in the errror message when you tried to use WiFi.begin() about is actually the SoftAP configuration page - the Oak is programmed so that that the wifi config is managed by using the SoftAP web page
If you still want to use the WiFi.begin() for some reason, try the following snippet. You could also use the oak in SYSTEM_MODE(MANUAL) (which tells it to let your code manage both the wifi and particle settings) and just use the built-in Oak.connect() command to connect to your previously configured wifi.
WiFi.disconnect()
WiFi.persistent(false);
wstatus = WiFi.begin_internal(SSID, passwd, 0, NULL);
I'd be curious to know how you go converting them to pure ESP8266 Arduino boards...
someone was asking about it back in May but I didn't hear any updates as to how successful it had been...
The biggest catch there AFAIK is that the usb on the Oak only provides power - there is no USB-to-serial chip on the Oak (which saves power as well as reduces cost), so you need to supply your own 3.3v compatible usb-to-serial adapter to do the initial programming, and to recover it if your code goes south.