Make generate_protos.sh Windows-friendly.

To my surprise, executing generate_protos.sh used the version of Bash installed with Git for Windows by default.
After a few modifications to detect the most appropriate protoc to use, this worked pretty simply.
This change also:
- adds generation of the address book tutorial proto,
- fixes the addressbook.proto to specify proto2 explicitly (to avoid a warning from protoc; I don't think we want warnings...)
- fixes the addressbook.proto C# namespace (which I thought I'd done before, but apparently hadn't)
- includes the regenerated UnittestCustomOptions.cs apart from the DescriptorProtoFIle => Descriptor change
diff --git a/csharp/generate_protos.sh b/csharp/generate_protos.sh
index 9cd3eb5..8c066cb 100755
--- a/csharp/generate_protos.sh
+++ b/csharp/generate_protos.sh
@@ -8,8 +8,22 @@
 # cd to repository root
 cd $(dirname $0)/..
 
-# protocol buffer compiler to use
-PROTOC=src/protoc
+# Protocol buffer compiler to use. If the PROTOC variable is set,
+# use that. Otherwise, probe for expected locations under both
+# Windows and Unix.
+if [ -z "$PROTOC" ]; then
+  # TODO(jonskeet): Use an array and a for loop instead?
+  if [ -x vsprojects/Debug/protoc.exe ]; then
+    PROTOC=vsprojects/Debug/protoc.exe
+  elif [ -x vsprojects/Release/protoc.exe ]; then
+    PROTOC=vsprojects/Release/protoc.exe
+  elif [ -x src/protoc ]; then
+    PROTOC=src/protoc
+  else
+    echo "Unable to find protocol buffer compiler."
+    exit 1
+  fi
+fi
 
 # Descriptor proto
 #TODO(jtattermusch): generate descriptor.proto
@@ -48,3 +62,7 @@
 $PROTOC -Icsharp/protos/extest --csharp_out=csharp/src/ProtocolBuffersLite.Test/TestProtos \
     csharp/protos/extest/unittest_extras_full.proto \
     csharp/protos/extest/unittest_extras_lite.proto
+
+# AddressBook sample protos
+$PROTOC -Iexamples --csharp_out=csharp/src/AddressBook \
+    examples/addressbook.proto