add write method to pbxproj module
do not close file handler after writing to it
when writing a string, do not encode it to unicode
detect encoding in Plist
add test helpers module
Add test case that tries to parse and recreate fixture project files
Add "@" to the black list for characters in identifiers
Add default name "ShellScript" to PBXShellScriptBuildPhase
Fix escape_string in pbxproj.writer

Strings were not correctly escaped, replaced it with a correct version.
FIX Xcode removes whitespaces from project name, so we do the same.
Add TouchTracker.pbxproj to fixtures/parse

source: https://github.com/FlyingBanana1024102/TouchTracker/blob/67398b0bd7b627c4b915012ec481c85d62788201/project.pbxproj
Make test_pbxmerge more beautiful.
Add "*" to the identifier black list.
Add XCVersionGroup ISA.
Add Trees.pbxproj to fixtures/parse

source: https://raw.github.com/judges/Trees/d2bd8c9fbadc8903f4f5b807faabcb3e9723441e/project.pbxproj
Use self.path as alternative to self.name for XCVersionGroup
Do not only parse one phase object, but all phase objects

This fixes missing objects in the phases when the project file contains multiple instances of a phase isa.
Add DevCampFire.pbxproj to fixtures/parse

source: https://raw.github.com/DevCampFire/DevCampFire/24a2d69cf8f3d8ddb4cb82ba5630a18e66584503/project.pbxproj
Code dedup: Move writer implementation from pbxproj.writer to plist.nextstep
Code dedup: use pbxproj.write in merge_pbxproj_fixtures