Small thickness lines disappear at some orientation

Motivation behind the changes
---------------------------------------
By generating stimuli for illusory contour experiments, I have observed that, when the lines have a small thickness, they disappear at some orientation (particularly 0 and pi/2). See the test code below. The fact that it is orientation-dependent may be annoying. I propose in the pattern generator Line to check the thickness with respect to the pixel size. This change guarantees that, even with a thickness of 0, you will get a line
After this change, I propose to get a little bit further, that is to guarantee that the line of the smallest width that you get is always 1 pixel. Again, in the current code, you get this feature at nearly all orientations except close to 0 and pi/2. To get this feature at all orientations, I propose in this pull request a change in patternfn.py/line.

Test code
------------
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from numpy import pi

import imagen
from dataviews.sheetviews.boundingregion import BoundingBox

bounds=BoundingBox(radius = 6)
xdensity = 20
ydensity = 20

fig = plt.figure()

def plot(image):
  im = plt.imshow(image,cmap=cm.Greys, interpolation='none', aspect='auto', extent=[-6,6,-6,6])
  
def one_line(orientation=pi/4):
  ima = imagen.Line(scale=-1,offset=1,orientation=orientation,thickness=0.03,x=0., y=0., smoothing=0.0, xdensity=xdensity, ydensity=ydensity,bounds=bounds)
  return ima()

plt.ylim([0,1])

for i in xrange(1,7):
  ax=plt.subplot(2,3,i)
  angle=(i-1)/10.
  ax.set_title('angle='+str(angle)+'pi')
  plot(one_line(orientation=(angle*pi)))
  
plt.show()

Results of the test code
------------------------------
Initial behavior: at orientation 0 and pi/2, the lines disappear:
![line_disappear_ko](https://cloud.githubusercontent.com/assets/5656774/3190693/ca6d39d6-ecd1-11e3-8bf2-4c04f0ee0c43.png)

Intermediate behavior after the first correction: the minimal width is 2 pixels at 0 and pi/2, whereas it is 1 pixel at other orientations:
![minimal_line_wider_than_1_pixel_ko](https://cloud.githubusercontent.com/assets/5656774/3190698/cf88afea-ecd1-11e3-81e6-97fdc652eb1e.png)

Final desired behavior: minimal line width is one pixel at all orientations (the sixth panel has a line of width one, not visible here due to the resolution):
![minimal_thickness__one_pixel_ok](https://cloud.githubusercontent.com/assets/5656774/3190632/fb1f1f64-ecd0-11e3-8b94-7e9204b04a08.png)

How can the *0.001*xpixelsize be justified?  That seems like a hack that would only work for some densities.

In general, I think this feature is useful to have, but it changes the output from the current code, which has been released for many years now, which is a dangerous thing to do.  It also isn't always useful to enforce such a minimum -- e.g. it's valid to have a thickness of zero, but a non-zero smoothing parameter, which gives a smooth line with no sharp boundary in the middle; the current edits would change that.  

Thus in order to add this new feature of having a minimum thickness, it needs to be controlled by a parameter that would turn off the behavior by default to preserve backwards compatibility.  E.g. the parameter could be minimum_pixel_thickness(param.Number(default=0)), which you can set to 1 to get the behavior you want (or to some higher value in certain cases).